文章目录
一、用户相关命令
(一)su命令
改变身份的命令 su
su 是最简单的用户切换命令,通过该命令可以实现任何身份的切换,包括从普通用户切换为 root 用户、从 root 用户切换为普通用户以及普通用户之间的切换。
普通用户之间切换以及普通用户切换至 root 用户,都需要知晓对方的密码,只有正确输入密码,才能实现切换;从 root 用户切换至其他用户,无需知晓对方密码,直接可切换成功
用法: su [选项] 用户名
选项:
-
-f: –fast:不必读启动文件(如 csh.cshrc 等),仅用于csh或tcsh两种Shell,执行后不改变环境变数和目录
-
-l: –login:加了这个参数之后,就好像是重新登陆一样,大部分环境变量(例如HOME、SHELL和USER等)都是以该使用者(USER)为主,并且工作目录也会改变。
-
-m, -p :–preserve-environment:表示切换为指定用户的身份,但不改变当前的工作环境(不使用切换用户的配置文件)
-
-c command:变更账号为USER的使用者,并执行指令(command)后再变回原来使用者
,执行时不改变环境变数和目录扫描二维码关注公众号,回复: 11874482 查看本文章 -
-:当前用户不仅切换为指定用户的身份,同时所用的工作环境也切换为此用户的环境(包括 PATH 变量、MAIL 变量等),使用 - 选项可省略用户名,默认会切换为 root 用户。
-
不加选项:切换用户后不改变环境变数和目录
说明:以上所有选项后如果没有指定用户名,缺省情况是root
-f ,-p,-m和不加选项的功能基本一样
【例 1】
#从普通用户切换到root用户,可以执行部分root权限
#使用-f选项不会改变环境变数和目录
[dxk@admin ~]$ whoami
dxk
[dxk@admin ~]$ pwd
/home/dxk
[dxk@admin ~]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dxk/.local/bin:/home/dxk/bin
[dxk@admin ~]$ su -f root
密码:
[root@admin dxk]# pwd #注意命令行的显示,表示是从普通用户dxk切换到root用户下
/home/dxk
[root@admin dxk]# whoami
root
[root@admin dxk]# echo $PATH #可以看到环境变量还是切换以前的用户的
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dxk/.local/bin:/home/dxk/bin
[root@admin dxk]# exit #使用exit命令就可以退出当前用户 ,切换回以前的用户
exit
[dxk@admin ~]$
这里要说明的是:无论su命令使用哪个选项,从root用户切换到普通用户不需要输入密码;而普通用户切换到任何用户都需要输入密码
【例 2】
# 完全就是直接登录到root用户,大部分环境变量都是以切换过来的用户为主,并且目录也是切换过来的用户的
[dxk@admin ~]$ pwd
/home/dxk
[dxk@admin ~]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dxk/.local/bin:/home/dxk/bin
[dxk@admin ~]$ whoami
dxk
[dxk@admin ~]$ su -l root
密码:
上一次登录:一 7月 13 21:55:44 CST 2020pts/0 上
[root@admin ~]# pwd #从以下可以看到环境变数和目录都切换过来了
/root
[root@admin ~]# whoami
root
[root@admin ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@admin ~]# exit #使用exit命令就可以退出当前用户 ,切换回以前的用户
登出
[dxk@admin ~]$
【例 3】
#验证:
[root@admin ~]# su -c pwd dxk
/root #可以看到,目录并未改变
[root@admin ~]# #执行完后执行完该命令自行切换回原来的用户
[dxk@admin ~]$ su -c 'echo $PATH' root
密码: #普通用户切换到其他用户还是得输入密码
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dxk/.local/bin:/home/dxk/bin
#变量也并未改变,root的PATH变量是:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
【例 4】
#普通用户是无法使用useradd命令的
[dxk@admin ~]$ su -c "useradd test01" root
密码:
[dxk@admin ~]$ su -c "passwd test01" root
密码:
更改用户 test01 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新
[dxk@admin ~]$
【例 5】
[dxk@admin ~]$ su - root
密码:
上一次登录:二 7月 14 09:35:48 CST 2020pts/1 上
[root@admin ~]# pwd #目录也切换过来
/root
[root@admin ~]# pwd
/root
[root@admin ~]# echo $PATH #环境变数也切换过来
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@admin ~]# whoami #同样身份也是
root
[root@admin ~]# exit
登出
[dxk@admin ~]$
#下面我们看看su不加选项
[dxk@admin ~]$ su root
密码:
[root@admin dxk]# pwd
/home/dxk
[root@admin dxk]# echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dxk/.local/bin:/home/dxk/bin
[root@admin dxk]# whoami
root
[root@admin dxk]# exit
exit
[dxk@admin ~]$
#不改变环境变数和目录
只有 -c 选项执行一条命令后用户身份会随即自动切换回来,其他切换用户的方式不会自动切换,只能使用 exit 命令进行手动切换
su 和 su - 的区别
因为我们su命令最常用的就是 su
和 su -
,这两个的的区别是:
使用 su 命令时,有 - 和没有 - 是完全不同的,- 选项表示在切换用户身份的同时,连当前使用的环境变量也切换成指定用户的。我们知道,环境变量是用来定义操作系统环境的,因此如果系统环境没有随用户身份切换,很多命令无法正确执行。在不使用 su - 的情况下,虽然用户身份成功切换,但环境变量依旧用的是原用户的,切换并不完整
(二) 查看当前用户信息的命令
1.who命令
显示目前登录到系统的用户的命令 who
显示当前已登录的用户信息
用法: who [选项]… [ 文件 | 参数1 参数2 ]
选项:
-
-a :显示所有用户的所有信息(上次系统启动时间、显示已死的进程、显示系统登录进程、显示由 init 进程衍生的活动进程、显示当前的运行级别、用+,- 或 ? 标注用户消息状态、列出已登录的用户)
-
-q:打印一份在本地系统上的用户和用户数的快速清单。
-
-r:显示当前系统的运行级别
-
-b:指出最近系统启动的方式和时间
who命令实际上就是通过访问该/var/run/utmp日志文件而获取的相关信息
【例 1】
#第一列显示当前登录到服务器的用户
#第二列显示登陆的终端设备
#第三列显示登陆的时间和终端的ip地址
[root@admin ~]# who #等同于who -s
root tty1 2020-07-14 10:11
root pts/0 2020-07-14 09:07 (192.168.126.1)
dxk pts/1 2020-07-14 09:43 (192.168.126.1)
[root@admin ~]# who -s
root tty1 2020-07-14 10:11
root pts/0 2020-07-14 09:07 (192.168.126.1)
dxk pts/1 2020-07-14 09:43 (192.168.126.1)
[root@admin ~]# who -H #添加表头
名称 线路 时间 备注
root tty1 2020-07-14 10:11
root pts/0 2020-07-14 09:07 (192.168.126.1)
dxk pts/1 2020-07-14 09:43 (192.168.126.1)
【例 2】
[root@admin ~]# who -a
系统引导 2020-07-14 09:06
root + tty1 2020-07-14 10:11 00:21 744
运行级别 3 2020-07-14 09:07
root + pts/0 2020-07-14 09:07 . 1615 (192.168.126.1)
dxk + pts/1 2020-07-14 09:43 . 1830 (192.168.126.1)
pts/2 2020-07-14 10:10 1727 id=ts/2 终端=0 退出=0
#第一列显示当前登录到系统的用户名
#第二列显示对应用户在终端设备的登陆方式
#第三列显示对应用户的登录时间
#第四列显示对应用户的客户端ip地址
#第一行和第三行显示本机登陆的方式和运行级别
说明:系统的启动级别有7个运行级别:
- 0: 系统停机(关机)模式,系统默认运行级别不能设置为0,否则不能正常启动,一开机就自动关机。
- 1:单用户模式,root权限,用于系统维护,禁止远程登陆,就像Windows下的安全模式登录。
- 2:多用户模式,没有NFS网络支持。
- 3:完整的多用户文本模式,有NFS,登陆后进入控制台命令行模式。
- 4:系统未使用,保留一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。
- 5:图形化模式,登陆后进入图形GUI模式或GNOME、KDE图形化界面,如X Window系统。
- 6:重启模式,默认运行级别不能设为6,否则不能正常启动,就会一直开机重启开机重启。
提示:输入init 0,系统会关机;输入init 6,系统会自动重启
查看系统运行级别:runlevel
[root@admin ~]# runlevel
N 3
【例 3】
#-q:打印一份在本地系统上登录的用户和用户数的快速清单
[root@admin ~]# who -q
root root dxk
# 用户数=3
【例 4】
#-r:显示当前进程的运行级别
[root@admin ~]# who -r
运行级别 3 2020-07-14 09:07
【例 5】
#-b:指出最近系统启动的方式和时间
[root@admin ~]# who -b
系统引导 2020-07-14 09:06
2.w命令
显示登录到系统的用户信息的命令 w
w命令和who命令类似
Linux w命令用于显示目前登入系统的用户信息。
执行这项指令可得知目前登入系统的用户有哪些人,以及他们正在执行的程序。
w命令实际上就是通过访问该/var/run/utmp日志文件而获取的相关信息
用法: w [选项][用户名称]
选项:
- -f 开启或关闭显示用户从何处登入系统(单独使用w命令是默认开启显示ip)
- -h 不显示各栏位的标题信息列
- -l 使用详细格式列表,此为预设值
- -s 使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗费的CPU时间
- -u 忽略执行程序的名称,以及该程序耗费CPU时间的信息
- -V 显示版本信息
单独执行 w 指令会显示所有的用户,也可指定用户名称,仅显示某位用户的相关信息
【例 1】
#第一行显示当前的系统时间,启动 (up)多久,几个使用者以及在系统上的平均负载等
#第二行是各个选项的说明(用户名,登陆的终端方式、客户端IP地址、登录时间、系统运行时长、JCPU、PCPU、当前运行进程)
#第三行以后,每行代表一个使用者及其相关信息
#
[root@admin ~]# w #单独使用w命令是默认开启显示ip
10:56:54 up 1:50, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 10:11 45:02 0.04s 0.04s -bash
dxk pts/0 192.168.126.1 10:55 30.00s 0.11s 0.11s -bash
root pts/1 192.168.126.1 10:56 2.00s 0.08s 0.03s w
[root@admin ~]# w -f #使用-f选项不显示ip
11:07:26 up 2:00, 3 users, load average: 0.01, 0.02, 0.05
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
root tty1 10:11 55:34 0.04s 0.04s -bash
dxk pts/0 10:55 11:02 0.11s 0.11s -bash
root pts/1 10:56 6.00s 0.06s 0.00s w -f
【例 2】
#-h 不显示各栏位的标题信息列
[root@admin ~]# w
11:09:34 up 2:03, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 10:11 57:42 0.04s 0.04s -bash
dxk pts/0 192.168.126.1 10:55 13:10 0.11s 0.11s -bash
root pts/1 192.168.126.1 10:56 6.00s 0.06s 0.00s w
[root@admin ~]#
[root@admin ~]# w -h
root tty1 10:11 57:03 0.04s 0.04s -bash
dxk pts/0 192.168.126.1 10:55 12:31 0.11s 0.11s -bash
root pts/1 192.168.126.1 10:56 7.00s 0.06s 0.00s w -h
【例 3】
[root@admin ~]# w
11:17:45 up 2:11, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 10:11 1:05m 0.04s 0.04s -bash
dxk pts/0 192.168.126.1 10:55 21:21 0.11s 0.11s -bash
root pts/1 192.168.126.1 10:56 1.00s 0.14s 0.00s w
[root@admin ~]# w -s #-s 使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗费的CPU时间
11:17:48 up 2:11, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM IDLE WHAT
root tty1 1:05m -bash
dxk pts/0 192.168.126.1 21:24 -bash
root pts/1 192.168.126.1 4.00s w -s
[root@admin ~]# w -u #-u 忽略执行程序的名称,以及该程序耗费CPU时间的信息
11:17:51 up 2:11, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 10:11 1:05m 0.04s 0.04s -bash
dxk pts/0 192.168.126.1 10:55 21:27 0.11s 0.11s -bash
root pts/1 192.168.126.1 10:56 7.00s 0.14s 0.00s w -u
【例 4】
也可以查看指定的用户的信息
[root@admin ~]# w dxk
11:20:03 up 2:13, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
dxk pts/0 192.168.126.1 10:55 23:39 0.11s 0.11s -bash
[root@admin ~]# w root
11:20:07 up 2:13, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 10:11 1:08m 0.04s 0.04s -bash
root pts/1 192.168.126.1 10:56 7.00s 0.17s 0.00s w root
4.last命令
列出目前与过去登入系统的用户相关信息的命令 last
用法: last [选项]
选项:
- -a:把从何处登入系统的主机名称或ip地址,显示在最后一行;
- -d:将IP地址转换成主机名称;
- -f <记录文件>:指定记录文件。
- -n :<显示列数>或-<显示列数>:设置列出名单的显示列数;
- -R:不显示登入系统的主机名称或IP地址;
- -x:显示系统关机,重新开机,以及执行等级的改变等信息
last命令实际上是通过访问/var/log/wtmp日志文件获得这些信息
【例 1】
[root@admin ~]# last
root pts/1 192.168.126.1 Tue Jul 14 10:56 still logged in
dxk pts/0 192.168.126.1 Tue Jul 14 10:55 still logged in
root tty1 Tue Jul 14 10:11 still logged in
dxk pts/1 192.168.126.1 Tue Jul 14 09:43 - 10:55 (01:11)
test01 pts/2 192.168.126.1 Tue Jul 14 09:23 - 10:10 (00:47)
dxk pts/1 192.168.126.1 Tue Jul 14 09:22 - 09:43 (00:21)
#still logged in:表示依然在线
#09:43 - 10:55 表示该用户在线的时间区间
#(01:11)表示用户的在线时长
wtmp begins Mon Jun 29 17:14:22 2020
【例 2】
#-a:把从何处登入系统的主机名称或ip地址,显示在最后一行;
[root@admin ~]# last -a
root pts/1 Tue Jul 14 10:56 still logged in 192.168.126.1
dxk pts/0 Tue Jul 14 10:55 still logged in 192.168.126.1
root tty1 Tue Jul 14 10:11 still logged in
dxk pts/1 Tue Jul 14 09:43 - 10:55 (01:11) 192.168.126.1
test01 pts/2 Tue Jul 14 09:23 - 10:10 (00:47) 192.168.126.1
dxk pts/1 Tue Jul 14 09:22 - 09:43 (00:21) 192.168.126.1
wtmp begins Mon Jun 29 17:14:22 2020
【例 3】
#-d:将IP地址转换成主机名称;
[root@admin ~]# last -d
root pts/1 192.168.126.1 Tue Jul 14 10:56 still logged in
dxk pts/0 192.168.126.1 Tue Jul 14 10:55 still logged in
root tty1 0.0.0.0 Tue Jul 14 10:11 still logged in
dxk pts/1 192.168.126.1 Tue Jul 14 09:43 - 10:55 (01:11)
test01 pts/2 192.168.126.1 Tue Jul 14 09:23 - 10:10 (00:47)
dxk pts/1 192.168.126.1 Tue Jul 14 09:22 - 09:43 (00:21)
wtmp begins Mon Jun 29 17:14:22 2020
【例 4】
-n <显示列数>或-<显示列数>:设置列出名单的显示列数;
[root@admin ~]# last -n 4 #只显示最近的四条信息
root pts/1 192.168.126.1 Tue Jul 14 10:56 still logged in
dxk pts/0 192.168.126.1 Tue Jul 14 10:55 still logged in
root tty1 Tue Jul 14 10:11 still logged in
dxk pts/1 192.168.126.1 Tue Jul 14 09:43 - 10:55 (01:11)
wtmp begins Mon Jun 29 17:14:22 2020
另外,如果想要知道每个账户最近登录的时间,则可以使用lastlog这个命令,lastlog会去读取/var/log/lastog文件,并将数据输出
5.lastlog命令
lastlog命令用于显示系统中所有用户最近一次登录信息
lastlog文件在每次有用户登录时被查询。可以使用lastlog命令检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log/lastlog的内容。它根据UID排序显示登录名、端口号(tty)和上次登录时间。如果一个用户从未登录过,lastlog显示Never logged。注意需要以root身份运行该命令。
lastlog命令实际是查看/var/log/lastlog文件
用法: lastlog [选项] 参数
选项:
- -b:–before DAYS 仅打印早于 DAYS 的最近登录记录
- -t: --time DAYS 仅打印晚于 DAYS 的最近登录记录
- -u:–user LOGIN 打印 LOGIN 用户的最近登录记录
【例 1】
显示系统中所有用户最近一次的登录信息
[root@admin ~]# lastlog
用户名 端口 来自 最后登陆时间
root pts/1 192.168.126.1 二 7月 14 10:56:52 +0800 2020
bin **从未登录过**
daemon **从未登录过**
adm **从未登录过**
……中间省略……
apache **从未登录过**
ntp **从未登录过**
test01 pts/2 192.168.126.1 二 7月 14 09:23:46 +0800 2020
【例 2】
显示指定天数前的登录信息
#显示10天前的登录信息
[root@admin ~]# lastlog -b 10
【例 3】
显示指定天数以来的登录信息
#显示10天以来的登录信息
[root@admin ~]# lastlog -t 10
【例 4】
显示指定用户的最近登录信息
#显示dxk用户的信息
[root@admin ~]# lastlog -u dxk
(三)linux下记录用户登录信息的日志文件
1. /var/log/lastlog文件
使用lastlog命令查看该文件,查看系统用户的登录历史
该日志文件记录最近成功登陆的事件和最后一次不成功的登录事件,由login生成。
在每次用户登陆时被查询,该文件是一个二进制文件,需要使用lastlog命令查询,根据UID排序显示登录名、端口号和上次登录时间。如果某用户从来没有登录过,就显示为“Never logged in”。该命令只能以root权限执行
2. /var/log/wtmp文件
该文件存放所有用户的所有登录信息,last命令就是通过这个文件获取信息的
该日志文件永久记录每个用户登录、注销及系统的启动、停机事件。
因此随着系统正常运行时间的增加,该文件的大小也会越来越大,增加的速度取决于系统用户登录次数。
该日志文件可以用来查看用户的登录记录,last命令就通过访问这个文件获得这些信息,并以反序从后向前显示用户的登录记录,last也能根据用户、终端、tty或时间显示相应的记录。
3. /var/run/utmp
该日志文件记录有关当前登录的每个用户的信息。因此这个文件会随着用户登录和注销系统而不断变化,它只保留当时联机的用户记录,不会为用户保留永久的记录。系统中需要查询当前用户状态的程序,如who、w、users、finger等就需要访问这个文件。该日志文件并不能包括所有精确的信息,因为某些突发错误会终止用户登录会话,而系统没有及时更新utmp记录,因此该日志文件的记录不是百分之百值得信赖的。
以上提及的3个文件(/var/log/wtmp、/var/run/utmp、/var/log/lastlog)是日志子系统的关键文件,都记录了用户登录的情况。这些文件的所有记录都包含了时间戳。这些文件是按二进制保存的,故不能用cat、less之类的命令直接查看这些文件,而是需要使用相关命令通过这些文件来查看
二、系统相关命令
(一)uname命令
显示操作系统相关信息的命令 uname
uname命令可用于显示电脑以及操作系统的相关信息
用法:uname [选项]…
选项:
- -a:–all 输出所有信息
- -s:–kernel-name 输出内核名称
- -n:–nodename 输出网络节点上的主机名
- -r:–kernel-release 输出内核发行版号
- -v: --kernel-version 输出内核版本
- -m: --machine 输出主机的硬件架构名称
- -p: --processor 输出处理器类型或"unknown"
- -i:–hardware-platform 输出硬件平台或"unknown"
- -o: --operating-system 输出操作系统名称
输出一组系统信息。如果不跟随选项,则视为只附加-s 选项。
uname -a :显示系统内核名称、网络节点上的主机名、内核发行版号、内核版本、机器硬件架构名、处理器类型、硬件平台、操作系统名称
[root@admin bin]# uname -a
Linux admin 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
#分解
[root@admin ~]# uname -s #输出内核名称
Linux
[root@admin ~]# uname -n #输出网络节点上的主机名
admin
[root@admin ~]# uname -r #输出内核发行版号
3.10.0-1127.el7.x86_64
[root@admin ~]# uname -v 输出内核版本
#1 SMP Tue Mar 31 23:36:51 UTC 2020
[root@admin ~]# uname -m #输出主机的硬件架构名称
x86_64
[root@admin ~]# uname -p #输出处理器类型
x86_64
[root@admin ~]# uname -i #输出硬件平台
x86_64
[root@admin ~]# uname -o #输出操作系统名称
GNU/Linux
也可以查看文件:
[root@admin ~]# cat /proc/version
查看发行版本:
[root@admin ~]# cat /etc/redhat-release
(二)uptime命令
输出系统运行信息的命令 uptime
显示当前系统的运行信息
用法 : uptime [选项]
选项:
- -p:显示当前系统的运行时长
- -s:显示当前系统的启动时间
显示内容简介:
依次显示:当前时间、系统已经运行了多长时间、有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载
[root@admin ~]# uptime
15:37:28 up 1:33, 2 users, load average: 0.00, 0.01, 0.05
-
15:37:28:表示系统的当前时间
-
up 1:33:表示系统已经运行了1小时33分钟;系统累计运行时间,重启后清零
-
2 users:当前在线的用户数量;注意这里实际是连接数量,可以用w命令查看,同一用户多个连接的时候算作多个用户
-
load average: 0.00, 0.01, 0.05:最近1分钟、5分钟、15分钟系统的负载,值越低表示系统性能越好
【例 1】
查看系统平均负载
[root@admin ~]# cat /proc/loadavg
0.00 0.01 0.05 1/148 1824
#前3个数字表示最近1、5、15分钟的平均进程数量; 第4个数分母表示系统进程总数,分子表示正在运行的进程数;最后一个数字表示最近运行的进程ID
系统平均负载被定义为在特定时间间隔内运行队列中的平均进程数。如果一个进程满足以下条件则其就会位于运行队列中:
- 它没有在等待I/O操作的结果
- 它没有主动进入等待状态(也就是没有调用’wait’)
- 没有被停止(例如:等待终止)
一般来说,每个CPU内核当前活动进程数不大于3,则系统运行表现良好!当然这里说的是每个cpu内核,也就是如果你的主机是四核cpu的话,那么只要uptime最后输出的一串字符数值小于12即表示系统负载不是很严重.当然如果达到20,那就表示当前系统负载非常严重,估计打开执行web脚本非常缓慢.
【例 2】
查看系统运行时长
[root@admin ~]# uptime -p
up 6 minutes
【例 3】
显示系统的启动时间
[root@admin ~]# uptime -s
2020-07-14 16:28:45
【例 4】
查看CPU详细信息:
[root@admin ~]# cat /proc/cpuinfo
统计CPU核心数:
[root@admin ~]# cat /proc/cpuinfo | grep processor | wc -l
4
或top命令下按【1】键查看:
top - 17:40:45 up 46 min, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 127 total, 1 running, 126 sleeping, 0 stopped, 0 zombie
%Cpu0 : 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0
%Cpu1 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0
%Cpu2 : 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0
%Cpu3 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0
KiB Mem : 1863040 total, 1539440 free, 182696 used, 140904 buff/cache
(三)dmesg命令
显示开机信息的命令 dmesg
dmesg命令显示linux内核的环形缓冲区信息,我们可以从中获得诸如系统架构、cpu、挂载的硬件,RAM等多个运行级别的大量的系统信 息。当计算机启动时,系统内核(操作系统的核心部分)将会被加载到内存中。在加载的过程中会显示很多的信息,在这些信息中我们可以看到内核检测硬件设备。
kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息保存在/var/log/dmesg的日志文件中
dmesg用来显示内核环缓冲区(kernel-ring buffer)内容,内核将各种消息存放在这里。在系统引导时,内核将与硬件和模块初始化相关的信息填到这个缓冲区中。内核环缓冲区中的消息对于诊断系统问题 通常非常有用。在运行dmesg时,它显示大量信息。通常通过less或grep使用管道查看dmesg的输出,这样可以更容易找到待查信息。
用法: dmesg [选项]
选项:
- -c:显示信息后,清除ring buffer中的内容。
- -s<缓冲区大小>:预设置为8196,刚好等于ring buffer的大小。
- -n:设置记录信息的层级。
【例 1】
我们可以使用如 more、tail, less或者 grep 文字处理工具来处理 dmesg 命令的输出。由于dmesg日志的输出不适合在一页中完全显示,使用cat命令不方便查看,因此我们使用管道(pipe)将其输出送到more或者less命令单页显示
[root@admin ~]# dmesg | more
或
[root@admin ~]# dmesg | less
【例 2】
只输出dmesg命令的前20行日志
[root@admin ~]# dmesg | head -20
只输出dmesg命令最后20行日志
[root@admin ~]# dmesg | tail -20
查看dmesg头部的信息
[root@admin ~]# dmesg | head
查看dmesg尾部的信息
[root@admin ~]# dmesg | tail
#如果发现硬盘性能低下,可以使用dmesg来检查它们是否运行在DMA模式
【例 3】
搜索包含特定字符串的被检测到的硬件
#如果以太网连接出现问题,那么可以在dmesg日志中搜索eth
[root@admin ~]# dmesg | grep eth
#如果发现硬盘性能低下,可以使用dmesg来检查它们是否运行在DMA模式
[root@admin ~]# dmesg | grep DMA
【例 4】
清空dmesg缓冲区日志
我们可以使用如下命令来清空dmesg的日志。该命令会清空dmesg环形缓冲区中的日志。但是你依然可以查看存储在‘/var/log/dmesg’文件中的日志。你连接任何的设备都会产生dmesg日志输出。
[root@admin ~]# dmesg -c
(四)free命令
显示系统内存状态的命令 free
free 命令显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存
free 命令中的信息都来自于/proc/meminfo文件
用法: free [选项]
选项:
- -b:以Byte为单位显示内存使用情况
- -k:以KB为单位显示内存使用情况
- -m:以MB为单位显示内存使用情况
- -g :以GB为单位显示内存使用情况
- -h:以易于阅读的单位显示内存使用情况,最大为三位数,自动计算对应的单位值
- -s 间隔秒数: 持续观察内存使用状况
- -t:显示内存总和列
- -V:显示版本信息
下面先解释一下输出的内容:
[root@admin ~]# free
total used free shared buff/cache available
Mem: 1863040 184852 1541648 9708 136540 1530292
Swap: 3907580 0 3907580
- Mem 行(第二行)是内存的使用情况。
- Swap 行(第三行)是交换分区的使用情况。
- total 列显示系统总的可用物理内存和交换空间大小。
- used 列显示已经被使用的物理内存和交换分区。
- free 列显示还有多少物理内存和交换空间可以使用。
- shared 列显示被共享使用的物理内存大小。
- buff/cache 列显示被 buffer(缓冲区) 和 cache(缓存) 使用的物理内存大小。
- available 列显示还可以被应用程序使用的物理内存大小。
【例 1】
以合适的单位显示内存使用情况
[root@admin ~]# free -h
total used free shared buff/cache available
Mem: 1.8G 180M 1.5G 9.5M 133M 1.5G
Swap: 3.7G 0B 3.7G
【例 2】
以总和的形式显示内存的使用信息
[root@admin ~]# free -t
total used free shared buff/cache available
Mem: 1863040 185156 1539248 9708 138636 1528940
Swap: 3907580 0 3907580
Total: 5770620 185156 5446828
[root@admin ~]# free -ht
total used free shared buff/cache available
Mem: 1.8G 181M 1.5G 9.5M 135M 1.5G
Swap: 3.7G 0B 3.7G
Total: 5.5G 181M 5.2G
【例 3】
有时我们需要持续的观察内存的状况,此时可以使用 -s 选项并指定间隔的秒数:
[root@admin ~]# free -s 3
total used free shared buff/cache available
Mem: 1863040 185272 1539132 9708 138636 1528824
Swap: 3907580 0 3907580
total used free shared buff/cache available
Mem: 1863040 185288 1539116 9708 138636 1528808
Swap: 3907580 0 3907580
total used free shared buff/cache available
Mem: 1863040 185288 1539116 9708 138636 1528808
Swap: 3907580 0 3907580
^C
[root@admin ~]#
上面的命令每隔 3 秒输出一次内存的使用情况,直到你按下 ctrl + c。
其实 free 命令中的信息都来自于 /proc/meminfo 文件。/proc/meminfo 文件包含了更多更原始的信息,只是看起来不太直观
[root@admin ~]# cat /proc/meminfo
三、单用户模式下修改root密码
忘记root密码这个问题出现的几率是很高的,不过,在linux下解决这个问题也很简单,只需重启linux系统,然后引导进入linux的单用户模式(init1),由于单用户模式是不需要输入登录密码的,因此,可以直接登录系统,修改root密码即可解决问题
重新启动进入单用户模式,系统会提供 root 权限的 bash 接口,此时用 passwd 命令修改账户密码
这里以CentOS7.8为例:
第一步:
进入grub引导的文本界面:
注意:这个界面一闪而过,所以速度要快一些
第二步:
利用键盘上下键找到如下图所示以“Linux16”为开头的一行,将光标定位到该行,这时按下【End】键,就将光标定位到了该段的最后,也就是此时光标在”UTF-8“的8后面闪烁
此时按下空格键并输入字段rd.break,之后按下【Ctrl】+ X键,等待系统运行进入单用户模式(警告:rd.break前有一个空格)
第三步: 进入单用户模式后
重新以读写的形式挂载 /sysroot 文件系统
执行命令mount -o remount,rw /sysroot
第四步: 进入文件系统
执行命令chroot /sysroot
第五步: 修改密码
执行命令echo “密码” |passwd --stdin root (这里的密码就是你重新为root用户设置的密码)
第六步: 刷新密码文件上下文
执行命令touch .autorelabel
第七步: 退出单用户:exit
第八步: 重启系统
执行 reboot命令
最后系统就会正常启动进入登陆界面,输入root用户和你修改后的密码就可以登录了
四、快捷键
Ctrl + c 终止当前进程
Ctrl + a 光标跳转到行首
Ctrl + e 光标跳转到行尾
Ctrl + k 清空光标之后(包括光标)的所有内容
Ctrl + u 清空光标(不包括光标)之前的所有内容
Ctrl + l 清屏(等同于清除屏幕信息的命令 clear)