Linux 中的 who 命令列出了系统上所有登录的用户。 使用起来非常简单。
只需在命令行中输入 who,它就会显示 Linux 系统上所有当前登录的用户。
[email protected]:~# who
root pts/0 2020-02-03 06:48 (152.72.29.73)
john pts/1 2020-02-03 07:02 (187.41.92.90)
jane pts/2 2020-02-03 07:02 (252.142.106.85)
请记住,它仅显示当前登录到您系统的用户。 还有其他方法可以查看 Linux 系统上的所有用户,例如 compgen。
who 命令有几个选项可以获取有关已登录用户的其他特定信息。
在 Linux 中使用 who 命令
以下是 who 命令的语法:
who [options] [filename]
您已经看到 who 命令在没有任何选项的情况下显示了哪些信息。 现在让我们看看它提供了哪些选项。
打印用户空闲时间
除了常规信息,您还可以打印用户的空闲时间。 如果用户在一段时间内没有输入任何内容,则反映为空闲时间。
who -u
正如您在下面的输出中看到的,用户 john 已经空闲了 2 分 3 秒。
[email protected]:~# who -u
root pts/0 2020-02-03 06:48 . 10669 (152.72.29.73)
john pts/2 2020-02-03 07:02 02:03 31528 (187.41.92.90)
你能用这些信息做什么? 一个实际用途是通过自动断开空闲超过一定时间的用户来实现额外的安全层。
仅显示用户名(及其计数)
使用 -q 选项,您只能显示登录的用户及其计数。
[email protected]:~# who -q
root john jane
# users=3
这类似于“用户命令”输出,但登录用户的计数除外。
检查是否可以向用户发送即时消息
您是否知道用户可以在 Linux 终端中使用命令行工具互相发送消息,例如 消息? 当然,由用户决定他/她是否想要接收此类消息。
您可以检查用户是否可以使用 -T 选项:
who -T
在下面的输出中,+ 表示是,- 表示否。 如果您看到 ?,则表示未知。
[email protected]:~# who -T
root - pts/0 2020-02-03 06:48 (152.72.29.73)
john + pts/2 2020-02-03 07:02 (187.41.92.90)
显示有关您自己的信息
有点whoami的替代品。 它显示用户信息,但仅限于您自己(即与当前终端关联的用户)。
who -m
检查上次系统启动时间
有点类似于 uptime 命令,您可以使用 -b 选项 who 命令的:
who -b
如您所见,我的测试服务器上次启动时间是 2019 年 12 月 19 日 09:41。
[email protected]:~# who -b
system boot 2019-12-19 09:41
打印登录用户的主机名
这可能适用于同一子网上的用户。 随着 –查找选项,您可以显示已登录用户的主机名。
检查过去的登录和错误登录信息
您可能知道在 Linux 文件系统层次结构中,存储运行时信息和日志。
Who 命令从 /var/run/utmp 获取信息。 您可以指定其他日志文件以获取不同的信息。
为了 example,如果您使用文件 /var/log/wtmp.log 可以获取有关过去登录的信息。
[email protected]:~# who /var/log/wtmp
root pts/0 2020-02-03 06:48 (152.72.29.73)
jane pts/1 2020-02-03 07:02 (252.142.106.85)
john pts/2 2020-02-03 07:02 (187.41.92.90)
jane pts/1 2020-02-03 07:12 (252.142.106.85)
jane pts/1 2020-02-03 08:55 (252.142.106.85)
同样,您可以使用 /var/log/btmp 文件查看所有失败的登录尝试。
[email protected]:~# who /var/log/btmp
当然,这取决于您的系统是否配置为记录这些信息。
到底…
还有一些其他选项,例如 -H ,可将标题添加为输出的第一行。 您可以随时通过其探索它们 手册页.
我已经列出了我认为的 who 命令的重要示例。 我希望你喜欢这个快速的 Linux 命令小教程。