系统痕迹命令

系统中有一些重要的痕迹日志文件,如/var/log/wtmp 、/var/run/utmp 、/var/log/btmp 、/var/log/lastlog 等日志文件,如果你用 vim 打开这些文件,你会发现这些文件是二进制乱码。这是由于这些日志中保存的是系统的重要登录痕迹,包括某个用户何时登录了系统,何时退出了系统,错误登录等重要的系统信息。这些信息要是可以通过 vim 打开,就能编辑,这样痕迹信息就不准确,所以这些重要的痕迹日志,只能通过对应的命令来进行查看。

1.w命令

w 命令是显示系统中正在登陆的用户信息的命令,这个命令查看的痕迹日志是/var/run/utmp。这个命令的基本信息如下:

— 命令名称:w

— 英文原意:Show who is logged on and what they are doing.

— 所在路径:/usr/bin/w

— 执行权限:所有用户。 

— 功能描述:显示灯用户,和他正在做什么。例如:
[root@localhost ~]# w
 15:22:02 up 26 min,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.1.1      14:56    2.00s  0.35s  0.01s w
上面w的描述信息如下

第一行显示系统的汇总信息,字段分别表示系统当前时间、系统运行时间、登陆哟内用户总数及系统平均负载信息。对于上述势力中的几个显示数据意义为:


15:22:02 表示执行W的时间是在下午15点22分。

26min 表示系统运行26分钟

1 USERS 表示当前系统登陆用户总数为1。

LOAD AVERAGE 与后面的数字一起表示系统在过去1,5,10分钟内的负载程度,数值越小,系统负载越轻。

从第二行开始构成一个表格,共有8个栏目,分别显示各个用户正在做的事情及该用户所占用的系统资料。

USER:显示登陆用户帐号名。用户重复登陆,该帐号也会重复出现。

TTY:用户登陆所用的终端。

FROM:显示用户在何处登陆系统。

LOGIN@:是LOGIN AT的意思,表示登陆进入系统的时间。

IDLE:用户空闲时间,从用户上一次任务结束后,开会记时。

JCPU:一终端代号来区分,表示在摸段时间内,所有与该终端相关的进程任务所耗费的CPU时间。

PCPU:指WHAT域的任务执行后耗费的CPU时间。

WHAT:表示当前执行的任务。

系统在之前 1 分钟、5 分钟、15 分钟的平均负载。如果 CPU 是单核的,则这个数值超过 1 就是高负载;如果 CPU 是四核的,则这个数值超过 4 就是高负载

load average: 0.00, 0.00, 0.00

(这个平均负载完全是依据个人经验来进行判断的,一般认为不应该超过服务器 CPU 的核数)

2.who 命令

who 命令和 w 命令类似,用于查看正在登陆的用户,但是显示的内容更加简单,也是查看 /var/run/utmp 日志。

[root@localhost ~]# who
roottty12022-04-12 23:59
rootpts/12022-04-12 23:59 (192.168.252.1)
#用户名登陆终端登陆时间(来源 IP)

3.last 命令

last 命令是查看系统所有登陆过的用户信息的,包括正在登陆的用户和之前登陆的用户。这个命令查看的是/var/log/wtmp 痕迹日志文件。

[root@localhost ~]# last
root     pts/0        192.168.1.1      Fri May 20 14:56   still logged in
reboot   system boot  3.10.0-1160.el7. Fri May 20 14:55 - 15:26  (00:30)
root     pts/2        192.168.1.1      Fri May 20 12:24 - down   (02:30)
root     pts/0        192.168.1.1      Thu May 19 17:31 - 14:21  (20:50)
root     pts/1        192.168.1.1      Thu May 19 14:31 - 14:21  (23:50)
root     tty1                          Thu May 19 14:30 - 14:55 (1+00:24)
root     pts/1        192.168.1.1      Sat May 14 14:20 - 15:50  (01:30)
root     pts/0        192.168.1.1      Wed May 11 11:48 - 14:31 (8+02:43)
reboot   system boot  3.10.0-1160.el7. Wed May 11 11:36 - 14:55 (9+03:18)
root     pts/0        192.168.1.1      Wed May 11 11:35 - crash  (00:01)
root     tty1                          Wed May 11 11:32 - 11:36  (00:04)
root     tty1                          Mon May  9 13:33 - 13:34  (00:00)
reboot   system boot  3.10.0-1160.el7. Mon May  9 13:31 - 14:55 (11+01:24)

wtmp begins Mon May  9 13:31:32 2022

第一列信息:用户名,或者显示reboot(启动或者重启操作在这里会记录成reboot)

第二列信息:终端位置,pts/0 (伪终端或虚拟终端) 意味着从诸如SSH或telnet的远程连接的用户。

                 tty (teletypewriter) 意味着直接连接到计算机或者本地连接的用户,如果是启动或者重启操作,这里会显示成system boot

第三列信息:登录ip或者内核,如果你看见:0.0 或者什么都没有,这意味着用户通过本地终端连接。

                  也有在状态中显示内核版本的信息,笔者猜测这些记录应该是属于系统的操作,如开机,关机,重启等操作

第四列信息:开始时间,其中的日期格式为date +"%a %b %d"

第五列信息:结束时间(still login in 还未退出 down 直到正常关机 crash 直到强制关机)

第六列信息:持续时间

4.lastlog命令

lastlog 命令是查看系统中所有用户最后一次的登陆时间的命令,他查看的日志是/var/log/lastlog文件。

[root@localhost ~]# lastlog
UsernamePortFromLatest
roottty1 Mon Nov 12 23:59:03 +0800 2018
bin Never logged in
daemon Never logged in
adm Never logged in
lp Never logged in
sync Never logged in
…省略部分内容…
#用户名终端来源 IP登陆时间

5.lastb命令

lastb 命令是查看错误登陆的信息的,查看的是/var/log/btmp 痕迹日志:

[root@localhost ~]# lastb
(unknown tty1 Mon Nov 12 23:58 - 23:58(00:00)
roottty1 Mon Nov 12 23:58 - 23:58(00:00)
#错误登陆用户终端尝试登陆的时间