linux极简小知识:24、查看当前登录用户的信息【w、who、users、whoami、who am i、id命令💗所有可能的方法】

392 阅读4分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

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

参考

主要参考自Linux下用于查看系统当前登录用户信息的4种方法Linux w命令Linux id命令等。