[root@localhost ~]# w [选项] [用户名]
| 选项 | 含义 |
|---|---|
| -h | 不显示输出信息的标题 |
| -l | 用长格式输出 |
| -s | 用短格式输出,不显示登陆时间,JCPU 和 PCPU 时间 |
| -V | 显示版本信息 |
[root@CncLucZK test]# w
19:21:05 up 7 days, 5:51, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 110.19.110.72 17:18 0.00s 0.04s 0.00s w
root pts/1 110.19.110.72 17:18 1:23m 0.06s 0.06s -bash
平均负载(load average)指的是在 1 分钟、5 分钟、15 分钟内系统的负载状况。
| 标题 | 含义 |
|---|---|
| USER | 登录到系统的用户。 |
| TTY | 登录终端。 |
| FROM | 表示用户从哪里登陆进来,一般显示远程登陆主机的 IP 地址或者主机名。 |
| LOGIN@ | 用户登陆的日期和时间。 |
| IDLE | 表示某个程序上次从终端开始执行到现在所持续的时间。 |
| JCPU | 和该终端连接的所有进程占用的 CPU 运算时间。这个时间里并不包括过去的后台作业时间,但是包括当前正在运行的后台作业所占用的时间。 |
| PCPU | 当前进程所占用的 CPU 运算时间。 |
| WHAT | 当前用户正在执行的进程名称和选项,换句话说,就是表示用户当前执行的是什么命令。 |
从 w 命令的输出中已知,Linux 服务器上已经登录了两个 root 用户,两个都是从远程终端 登录的(pts/0、pts/1),登录的来源 IP 是 110.19.110.72。
相比较 w 命令,who 命令只能显示当前登陆的用户信息,但无法知道其他用户正在执行的命令。 who 命令的基本格式如下:
[root@localhost ~]# who [选项] [file]
who 命令默认是通过 /var/run/utmp 文件来获取登陆用户信息,但如果通过 file 指定另一个文件,则 who 命令将不再默认读取 /var/run/utmp 文件,而是读取该指定文件来获取信息。
| 选项 | 含义 |
|---|---|
| -a | 列出所有信息,相当于所有选项。 |
| -b | 列出系统最近启动的时间日期。 |
| -l | 列出所有可登陆的终端信息。 |
| -m | 仅列出关于当前终端的信息,who -m 命令等同于 who am i。 |
| -q | 列出在本地系统上的用户和用户数的清单。 |
| -r | 显示当前系统的运行级别。 |
| -s | 仅显示名称、线路和时间字段信息,这是 who 命令的默认选项。 |
| -u | 显示当前每个用户的用户名、登陆终端、登陆时间、线路活动和进程标识。 |
| -T 或 -w | 显示 tty 终端的状态,“+”表示对任何人可写,“-”表示仅对 root 用户或所有者可写,“?”表示遇到线路故障。 |
[root@CncLucZK test]# who -q
root root
# users=2
[root@CncLucZK test]# who -r #当前系统的运行级别。
run-level 3 2022-10-19 13:30
[root@CncLucZK test]# who -u #当前每个用户的用户名、登陆终端、登陆时间、线路活动和进程标识。
root pts/0 2022-10-26 17:18 . 1473553 (110.19.110.72)
root pts/1 2022-10-26 17:18 01:33 1473606 (110.19.110.72)
[root@CncLucZK test]# who -T #显示 tty 终端的状态
root + pts/0 2022-10-26 17:18 (110.19.110.72)
root + pts/1 2022-10-26 17:18 (110.19.110.72)
[root@CncLucZK test]# who #相当于who -s仅显示名称、线路和时间字段信息。这是 who 命令的默认选项
root pts/0 2022-10-26 17:18 (110.19.110.72)
root pts/1 2022-10-26 17:18 (110.19.110.72)
使用 last 和 lastlog 命令:来查看现在已经退出登录的用户。last 命令可以查看当前和过去登陆系统用户的相关信息;lastlog 命令可以查看到每个系统用户最近一次登陆系统的时间。
last 命令的基本格式如下所示:
[root@localhost ~]# last [选项]
| 选项 | 含义 |
|---|---|
| -a | 把从何处登陆系统的主机名或 IP 地址显示在最后一行。 |
| -R | 不显示登陆系统的主机名或 IP 地址。 |
| -x | 显示系统关机、重新开机以及执行等级的改变等信息。 |
| -n 显示列数 | 设置列出信息的显示列数。 |
| -d | 将显示的 IP 地址转换成主机名称。 |
在执行 last 命令时,它默认会读取 /var/log/wtmp 日志文件,这是一个二进制文件,不能直接用 vi 编辑,只能通过 last 命令调用。
[root@CncLucZK test]# last -a | head -n 10
root pts/1 Wed Oct 26 17:18 still logged in 110.19.110.72
root pts/0 Wed Oct 26 17:18 still logged in 110.19.110.72
root pts/0 Wed Oct 26 11:33 - 16:53 (05:20) 110.19.110.72
root pts/2 Wed Oct 26 00:22 - 00:22 (00:00) 110.19.110.72
root pts/0 Wed Oct 26 00:09 - 03:12 (03:02) 110.19.110.72
root pts/1 Tue Oct 25 23:56 - 03:12 (03:16) 110.19.110.72
root pts/0 Tue Oct 25 19:19 - 00:09 (04:50) 110.19.110.72
root pts/1 Tue Oct 25 13:43 - 16:06 (02:23) 110.19.110.72
root pts/0 Tue Oct 25 08:51 - 16:08 (07:16) 110.19.110.72
root pts/0 Mon Oct 24 23:28 - 02:21 (02:52) 110.19.110.72
#用户名 登录终端 登录时间 - 退出时间(在线时间) 登录IP
reboot system boot 4.18.0-80.el8.x8 Sat Jun 4 12:17 - 21:22 (124+09:04)
#系统的重启时间
[root@CncLucZK test]# lastlog
Username Port From Latest
root pts/1 110.19.110.72 Wed Oct 26 17:18:47 +0800 2022
bin **Never logged in**
daemon **Never logged in**
...
www pts/0 Sun Oct 9 09:39:46 +0800 2022
zk pts/0 Wed Oct 26 17:53:34 +0800 2022
u-dev1 pts/0 Wed Oct 19 23:33:19 +0800 2022
u-dev2 pts/0 Wed Oct 19 21:58:48 +0800 2022
u1-test pts/0 Sat Oct 15 13:49:01 +0800 2022
参考文献:
Linux last和lastlog命令:查看过去登陆的用户信息