小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
w命令
w命令的使用
w,用于显示已经登录系统的用户列表,并显示用户正在执行的指令。
如下,root用户执行w命令:
# w
10:53:22 up 11 days, 1:17, 2 users, load average: 0.07, 0.15, 0.12
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 58.211.34.xxx 09:18 2.00s 0.08s 0.00s w
root_tes pts/1 58.211.34.xxx 10:52 18.00s 0.03s 0.03s -bash
注:此处可以看到 root_test 用户只显示出了 8 个字符...
w命令输出的信息包括:
- USER:用户名称
- TTY:用户的机器名称或tty号
- FROM:远程主机地址,即登陆位置
- LOGIN@:用户登录系统的时间
- IDLE:空闲时间(作用不大)
- JCPU:附加到tty(终端)的进程所用的时间(JCPU时间)
- PCPU:当前进程所用时间(PCPU时间)
- WHAT:用户当前正在使用的命令
注意w和who的输出的不同:
# who root pts/0 2021-09-13 09:18 (58.211.34.xxx) root_test pts/1 2021-09-13 10:52 (58.211.34.xxx)
w命令参数
w 后面还可以跟着“用户”,查看指定用户的信息
w [-fhlsuV][用户名称]
-f开启或关闭显示用户从何处登入系统。-h不显示各栏位的标题信息列。-l使用详细格式列表,此为预设值。-s使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗费的CPU时间(即:不显示JCPU, PCPU, 登录时间)。-u忽略执行程序的名称。-V显示版本信息。
w -f用户信息中不显示登陆位置:
# w -f
11:56:30 up 11 days, 2:20, 2 users, load average: 0.00, 0.01, 0.05
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 09:18 6.00s 0.08s 0.08s -bash
root_tes pts/1 10:52 1:03m 0.03s 0.03s -bash
pts表示伪终端。为了区别,会用0、1、2序号表示。
who命令查看(登录)用户名称及所启动的进程
who命令用于列举出当前已登录系统的用户名称。
其输出为:用户名、tty号、登陆时间日期、(登陆来源地址)。
# who
root pts/0 2021-09-13 09:18 (58.211.34.xxx)
root_test pts/1 2021-09-13 10:52 (58.211.34.xxx)
只列出用户,可以使用如下语句:
$ who | cut -d' ' -f1 | sort | uniq
root
root_test
users命令
users命令,用于打印输出登录服务器的用户名称。
$ users
root root_test
whoami命令
whoami
查看当前登录的用户名称:
$ whoami
root_test
who am i
who am i 显示当前登入的用户名称,以及当前所使用的tty信息。
输出结果包括:用户名、tty名、登陆时间,用户登录来自的ip地址。输出格式与who相同,只不过who am i仅输出当前用户信息。
$ who am i
root_test pts/1 2021-09-13 10:52 (58.211.34.xxx)
$ who mom likes
root_test pts/1 2021-09-13 10:52 (58.211.34.xxx)
id命令
id命令用于显示用户的ID,以及所属群组的ID。
id [-gGnru][--help][--version][用户名称]
参数说明:
-g或--group显示用户所属群组的ID。-G或--groups显示用户所属附加群组的ID。-n或--name显示用户,所属群组或附加群组的名称。-r或--real显示实际ID。-u或--user显示用户ID。-help显示帮助。-version显示版本信息。
id —— 显示当前用户ID
$ id
uid=1002(root_test) gid=1002(root_test) groups=1002(root_test)
id -un —— 等同whoami
whoami命令的执行效果和id -un的效果完全一样。
$ id -un
root_test
-n参数无法直接使用$ id -n id: cannot print only names or real IDs in default format
last 查看用户登陆的历史信息(曾经使用过系统的用户信息)
last命令可用于显示特定用户登录系统的历史记录。如果没有任何参数,则显示所有用户的历史信息。
在默认情况下,所显示的信息来源于 /var/log/wtmp 文件。
输出结果包含以下几列信息:
- 用户名称
- tty设备号
- 登陆地址
- 历史登录时间日期
- 登出时间日期
- 总工作时间
$ last root
root pts/0 58.211.34.xxx Mon Sep 13 09:18 still logged in
root pts/0 58.211.34.xxx Mon Sep 6 10:01 - 19:49 (09:48)
root pts/0 58.211.34.xxx Sat Sep 4 17:28 - 17:59 (00:31)
root pts/0 58.211.34.xxx Sat Sep 4 11:27 - 11:38 (00:10)
root pts/0 58.211.34.xxx Sat Sep 4 08:57 - 11:15 (02:17)
root pts/0 112.87.184.xxx Fri Sep 3 23:06 - 23:38 (00:32)
root pts/0 112.87.184.xxx Fri Sep 3 22:38 - 23:05 (00:27)
root pts/0 112.87.184.xxx Fri Sep 3 20:49 - 22:36 (01:46)
root pts/0 58.211.34.xxx Fri Sep 3 08:39 - 18:12 (09:32)
附加:关于 who、 w 和 whoami 命令的区别
三者提供的功能不仅仅文中提到的查看登陆用户信息。
-
who 命令用于确定系统上次启动的时间、登录用户列表以及系统当前的运行级别。
-
w 命令显示用户信息,如用户 ID 和系统上的活动。它还提供了系统运行时间以及系统平均负载的知识。
-
whoami 命令顾名思义,用于打印当前登录用户的用户名。
详细介绍可以查看这篇文章:Linux who, w and whoami Command