Linux笔记 Day07---(记录用户信息日志文件及相关命令:su、who、w、last、lastlog;系统信息命令:uname、uptime、dmesg、free;单用户模式修改root密码)

一、用户相关命令

(一)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)后再变回原来使用者
    ,执行时不改变环境变数和目录

  • -:当前用户不仅切换为指定用户的身份,同时所用的工作环境也切换为此用户的环境(包括 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命令最常用的就是 susu - ,这两个的的区别是:
使用 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
  1. Mem 行(第二行)是内存的使用情况。
  2. Swap 行(第三行)是交换分区的使用情况。
  3. total 列显示系统总的可用物理内存和交换空间大小。
  4. used 列显示已经被使用的物理内存和交换分区。
  5. free 列显示还有多少物理内存和交换空间可以使用。
  6. shared 列显示被共享使用的物理内存大小。
  7. buff/cache 列显示被 buffer(缓冲区) 和 cache(缓存) 使用的物理内存大小。
  8. 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)

猜你喜欢

转载自blog.csdn.net/weixin_45880055/article/details/107326072