简介
Linux包含了一些能够报告运行系统各方面信息的命令,其中包括当前登录用户、主机加电时间以及启动故障。这些数据可用于分配系统资源和故障诊断。
介绍以下命令:who、w、users、uptime、last和lastb。
案例练习
(1)who命令可以获取当前登录用户的相关信息
root@yyy-PC:~# who
yyy tty1 2021-09-11 15:36 (:0)
root pts/1 2021-09-11 15:42 (192.168.58.101)
root pts/2 2021-09-11 15:43 (::1)
root@yyy-PC:~#
该命令会显示出登录名、用户所使用的TTY、登录时间以及登录用户的远程主机名(或者X显示信息)。
TTY(该术语取自TeleTYperwriter)是与文本终端相关联的设备文件。当用户生成一个新终端时,对应的设备文件就会出现在/dev中(例如 /dev/pts/3)。可以通过执行命令tty来获得当前终端的设备路径。
(2)w命令可以获得有关登录用户更详细的信息:
root@yyy-PC:~# w
16:22:29 up 46 min, 3 users, load average: 0.06, 0.08, 0.08
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
yyy tty1 :0 15:36 8:46m 4.37s 1.50s /usr/bin/startdde
root pts/1 192.168.58.101 15:42 0.00s 0.10s 0.08s ssh -L 8000:www.baud
root pts/2 ::1 15:43 0.00s 0.09s 0.00s w
root@yyy-PC:~#
第一行列出了当前时间、系统运行时间、当前登录的用户数量以及过去的1/5/15分钟内的系统平均负载。接下来在每一行中显示了每个登录会话的详细信息,其中包括登录名、TTY、远程主机、登录时间、空闲时间、该用户登录后所使用的总CPU时间、当前运行进程所使用的CPU时间以及进程所对应的命令行。
uptime命令输出中的平均负载(load average)是表明系统负载量的一个参数
(3)users命令只列出当前的登录用户列表:
root@yyy-PC:~# users
root root yyy
如果某个用户有多个登录会话,不管是远程登录还是打开了多个终端窗口,那么该用户会被多次显示。在上面的输出中,用户root打开了2个终端会话。排除重复用户的最简单的方法是使用sort和uniq进行过滤:
(4)uptime命令可以查看系统的加电运行时长:
root@yyy-PC:~# uptime
16:27:06 up 51 min, 3 users, load average: 0.20, 0.13, 0.10
单词up之后的时间表明了系统已经加电运行了多久。
(5)last命令可以获取自文件/var/log/wtmp创建之后登录过系统的用户列表。这可能会追溯到一年之前(甚至更久):
root@yyy-PC:~# last
root pts/2 ::1 Sat Sep 11 15:43 still logged in
root pts/1 192.168.58.101 Sat Sep 11 15:42 still logged in
root pts/3 192.168.58.101 Sat Sep 11 15:38 - 15:39 (00:00)
root pts/2 ::1 Sat Sep 11 15:38 - 15:42 (00:04)
root pts/1 192.168.58.101 Sat Sep 11 15:37 - 15:42 (00:05)
yyy tty1 :0 Sat Sep 11 15:36 still logged in
reboot system boot 5.10.50-amd64-de Sat Sep 11 07:35 still running
root pts/1 192.168.58.101 Sat Sep 11 11:10 - crash (-3:35)
yyy pts/1 ::1 Sat Sep 11 11:07 - 11:09 (00:01)
yyy tty1 :0 Sat Sep 11 11:03 - crash (-3:27)
reboot system boot 5.10.50-amd64-de Sat Sep 11 11:01 still running
wtmp begins Sat Sep 11 11:01:30 2021
last命令会输出登录用户、用户所使用的tty、登录位置(IP地址或本地终端)、登录时间、登出时间、会话时长。伪用户名reboot表示系统重启。
(6)last命令也可以获取指定用户信息:
$ last USER
(7)上述命令中的USER可以是系统真实用户,也可以是伪用户reboot:
root@yyy-PC:~# last reboot
reboot system boot 5.10.50-amd64-de Sat Sep 11 07:35 still running
reboot system boot 5.10.50-amd64-de Sat Sep 11 11:01 still running
wtmp begins Sat Sep 11 11:01:30 2021
(8)lastb命令可以获取失败的用户登录会话信息:
root@yyy-PC:~# lastb
root ssh:notty 192.168.58.101 Sat Sep 11 15:38 - 15:38 (00:00)
yyy tty1 :0 Sat Sep 11 15:36 - 15:36 (00:00)
root ssh:notty 192.168.58.101 Sat Sep 11 11:10 - 11:10 (00:00)
root ssh:notty ::1 Sat Sep 11 11:07 - 11:07 (00:00)
root ssh:notty ::1 Sat Sep 11 11:07 - 11:07 (00:00)
root ssh:notty ::1 Sat Sep 11 11:07 - 11:07 (00:00)
root pts/0 Sat Sep 11 11:05 - 11:05 (00:00)
btmp begins Sat Sep 11 11:05:18 2021
你必须以root用户的身份运行lastb。
last和lastb输出的都是文件/var/log/wtmp的内容。默认输出事件发生的月份、天数和时间。但是该文件中可能包含了长达数年的数据,只使用“月份/天数”这种格式会造成混淆。选项-F可以输出完整的日期.