Linux运维基础之who命令详解

Linux运维基础之who命令详解

Linux 中的 who 命令是一个命令行实用程序,用于显示当前登录系统的用户信息。它能让你快速了解哪些用户登录了系统以及他们在做什么。

who 命令的输出通常包括用户名、终端名称(tty/pts)、登录日期和时间,以及用户的远程主机名称(如果是从远程位置登录)。

who 命令的一般语法:

$ who [OPTIONS...]

1. 显示所有用户信息

who -a

使用 -a 选项可以查看登录到当前系统的每个用户的所有详细信息。

示例:

下面是 who -a 命令可能显示的输出示例:

system boot  2023-07-09 08:15
run-level 5  2023-07-09 08:15
LOGIN        tty1         2023-07-09 08:15              420 id=tty1
username  +  pts/0        2023-07-09 10:18   .         1025 (192.168.1.10)

在此示例中:

  • system boot 2023-07-09 08:15 显示系统上次启动的时间。
  • run-level 5 2023-07-09 08:15 显示系统当前的运行级别以及上次更改的时间。运行级别 5 通常表示系统处于图形用户界面的多用户模式。
  • LOGIN tty1 2023-07-09 08:15 420 id=tty1 显示指定时间在终端 tty1 上启动的登录进程。数字 420 是登录进程的进程 ID,id=tty1 是终端的标识符。
  • username + pts/0 2023-07-09 10:18 . 1025 (192.168.1.10) 显示名为 username 的用户在指定时间登录了伪终端 pts/0。+ 号表示允许用户接收信息。点( . )表示用户处于活动状态。数字 1025 是用户 shell 的进程 ID,( 192.168.1.10 ) 是用户登录的远程主机的 IP 地址。

2. 显示系统最后一次启动时间

who -b

使用带有 -b 选项的 who 命令打印系统最后一次启动时间。

示例:

下面是 who -b 命令的输出示例:

system boot  2023-07-09 08:17

在这个例子中:

  • system boot 表示所提供的信息与系统启动时间有关。
  • 2023-07-09 08:17 是系统最后一次启动的日期和时间。

3. 列出所有登录用户

who -q

该命令只显示已登录用户的名称和已登录用户的总数。选项 -q 代表 “快速”。

示例:

下面是 who -q 命令的输出示例:

username1 username2 username3
# users=3

在此示例中:

  • username1username2, 和 username3 是当前登录系统的用户名。
  • # users=3 表示当前登录系统的用户总数。

4. 检查用户的写入权限

who -T

Linux 中的 who -t 命令用于显示上次系统启动时间。选项 -t 代表 “时间”。

示例:

让我们输入 who -T 命令,在终端中显示用户状态。

system boot  2023-07-09 08:15

在这个例子中:

  • system boot 表示系统最后一次启动的时间。
  • 2023-07-09 08:15 是系统最后一次启动的日期和时间。

5. 显示所有死亡进程

who -d

Linux 中的 who -d 命令用于显示已登录的用户,但也包括由用户启动但当前处于 “死亡” 状态的进程。这些进程由登录用户启动,但已不再与用户会话相连。

示例:

输入带有 -d 选项的 who 命令,显示所有死亡进程的详细信息。

username  pts/0        2023-07-09 10:18 (192.168.1.10)
username  pts/1        2023-07-09 10:20 .         12345

在本例中:

  • 第一行是普通用户会话,类似于 who 命令的输出。
  • 第二行代表一个 “死亡” 进程。第四列中的 . 表示该进程不再与用户会话相连。最后的数字 12345 是死亡进程的进程 ID(PID)。

6. 显示当前用户的信息

who -m

Linux 中的 who -m 命令用于显示当前终端的信息。-m 选项代表 “mesg”,是 “message” 的缩写。它只显示与当前终端有关的信息。

示例:

下面是 who -m 命令的输出示例:

username  pts/0        2023-07-09 10:18

在此示例中:

  • username 是登录用户的名称。
  • pts/0 是终端名称。pts 代表伪终端从属设备。如果用户通过物理终端登录,则应为 tty (电传打字机)。
  • 2023-07-09 10:18 是用户登录的日期和时间。

7. 显示 INIT 进程产生的所有活动进程

who -p

who -p 命令显示 init 系统生成的活动进程。不过,并非所有类 Unix 操作系统都提供此选项。

例如:

在可以使用该选项的系统上,可能会显示类似下面的输出:

run-level 3  2023-07-09 10:18

本例中:

  • run-level 3 表示系统当前的运行级别。运行级别是类似 Unix 的操作系统(如 Linux)运行时的一种状态或模式。不同的运行级别有不同的用途,并用数字表示。例如,运行级别 3 通常表示系统处于联网的多用户模式(具体含义因系统而异)。
  • 2023-07-09 10:18 是设置当前运行级别的日期和时间。

8. 显示当前 runlevel

who -r

Linux 中的 who -r 命令显示系统当前的运行级别。运行级别是系统的一种状态,它定义了用户可以使用哪些服务和资源。

例如:

run-level 3  2023-07-09 10:18

在此示例中:

  • run-level 3 表示系统当前的运行级别。在本例中,运行级别是 3,这通常意味着系统处于多用户模式,可以联网(根据具体的 Linux 发行版本,运行级别会略有不同)。
  • 2023-07-09 10:18 是当前运行级别最后一次更改的日期和时间。

更多 Linux 命令

下面罗列了最常见的一些 Linux 命令,您可以根据自己的需要查阅对应命令的详细解析:

目录操作 rmdir · cd · pwd · exa · ls
文件操作 cat · cp · dd · less · touch · ln · rename · more · head
文件系统操作 chown · mkfs · locate
网络 ping · curl · wget · iptables · mtr
搜索和文本处理 find · grep · sed · whatis · ripgrep · fd · tldr
系统信息和管理 env · history · top · who · htop · glances · lsof
用户和会话管理 screen · su · sudo · open

此外,我们还整理 Linux 命令行大全,以帮助大家全面深入地学习 Linux。

评论留言