Linux who 命令及实用示例

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,我们将探索 Linux 的 who 命令,这是一个强大的工具,用于显示当前登录用户的信息。我们将了解 who 命令的基本用法,学习如何过滤其输出,并探索它提供的不同字段。本实验涵盖了用户和权限管理的主题,这是系统管理员和用户理解系统当前活动的一项基本技能。

实验包括三个主要步骤:理解 who 命令、探索 who 命令的输出以及过滤 who 命令的输出。通过这些步骤,你将全面了解 who 命令及其实际应用。

Linux 命令速查表


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux/BasicFileOperationsGroup -.-> linux/cut("Text Cutting") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/TextProcessingGroup -.-> linux/awk("Text Processing") linux/UserandGroupManagementGroup -.-> linux/whoami("User Identifying") subgraph Lab Skills linux/cut -.-> lab-423008{{"Linux who 命令及实用示例"}} linux/grep -.-> lab-423008{{"Linux who 命令及实用示例"}} linux/awk -.-> lab-423008{{"Linux who 命令及实用示例"}} linux/whoami -.-> lab-423008{{"Linux who 命令及实用示例"}} end

理解 who 命令

在这一步中,我们将探索 Linux 中的 who 命令,这是一个强大的工具,用于显示当前登录用户的信息。

who 命令提供了诸如用户名、终端、登录时间以及用户登录的远程主机等信息。这些信息对于系统管理员和用户了解系统当前活动非常有用。

让我们从运行 who 命令开始:

who

示例输出:

labex   pts/0        2023-04-11 09:15 (172.17.0.1)

输出显示用户 labex 登录在 pts/0 终端上,登录时间为 2023-04-11 09:15,登录的远程主机为 172.17.0.1

who 命令还可以通过使用各种选项显示更多信息。一些常见的选项包括:

  • who -a:显示更详细的输出,包括空闲时间和用户 shell 的进程 ID。
  • who -H:显示带有列名的标题行。
  • who -q:显示登录用户的快速列表,仅显示用户名。
  • who am i:显示当前用户的信息。

让我们尝试其中一些选项:

who -a

示例输出:

labex   pts/0        2023-04-11 09:15 00:00   (172.17.0.1)

-a 选项显示了空闲时间,在此示例中为 00:00,表示用户正在积极使用终端。

who -H

示例输出:

NAME     LINE         TIME             COMMENT
labex    pts/0        2023-04-11 09:15  (172.17.0.1)

-H 选项在输出中添加了标题行,使得每列的含义更容易理解。

who am i

示例输出:

labex   pts/0        2023-04-11 09:15 (172.17.0.1)

who am i 命令显示当前用户的信息。

探索 who 命令的输出

在这一步中,我们将深入探讨 who 命令的输出,并理解它提供的不同字段。

让我们再次运行 who 命令:

who

示例输出:

labex   pts/0        2023-04-11 09:15 (172.17.0.1)

who 命令的输出包含以下字段:

  1. 用户名 (Username):登录用户的用户名,在此示例中为 labex
  2. 终端 (Terminal):用户登录的终端或会话,在此示例中为 pts/0
  3. 登录时间 (Login Time):用户登录系统的时间,在此示例中为 2023-04-11 09:15
  4. 远程主机 (Remote Host):用户登录的远程主机的 IP 地址或主机名,在此示例中为 (172.17.0.1)

现在,让我们更详细地探讨这些字段:

用户名 (Username):用户名字段显示当前登录用户的名称。这与你登录的用户名相同,在此示例中为 labex

终端 (Terminal):终端字段显示用户登录的终端或会话。在典型的 Linux 系统中,你可能会看到诸如 tty1pts/0pts/1 等值。这些代表不同类型的终端或会话。

登录时间 (Login Time):登录时间字段显示用户登录系统的日期和时间。

远程主机 (Remote Host):远程主机字段显示用户登录的远程系统的 IP 地址或主机名。在此示例中,用户是从 Docker 容器登录的,因此远程主机显示为 (172.17.0.1)

让我们尝试另一个示例,看看当多个用户登录时输出如何变化:

sudo useradd -m testuser
sudo su - testuser
who

示例输出:

labex   pts/0        2023-04-11 09:15 (172.17.0.1)
testuser pts/1        2023-04-11 09:20 (172.17.0.1)

在此示例中,我们创建了一个新用户 testuser 并切换到该用户。who 命令现在显示两个登录用户:labextestuser

过滤 who 命令的输出

在这一步中,我们将学习如何过滤 who 命令的输出以获取特定信息。

who 命令可能会生成大量输出,尤其是在有多用户登录的系统中。为了过滤输出,我们可以使用各种命令行工具,例如 grepawkcut

让我们从过滤输出以仅显示用户名开始:

who | awk '{print $1}'

示例输出:

labex

awk '{print $1}' 命令从 who 命令的输出中提取第一个字段(用户名)。

接下来,让我们过滤输出以仅显示登录时间:

who | awk '{print $4, $5}'

示例输出:

2023-04-11 09:15

awk '{print $4, $5}' 命令从 who 命令的输出中提取第四和第五个字段(登录日期和时间)。

你还可以使用 grep 根据特定条件过滤输出。例如,仅显示从特定远程主机登录的用户:

who | grep '(172.17.0.1)'

示例输出:

labex   pts/0        2023-04-11 09:15 (172.17.0.1)

grep '(172.17.0.1)' 命令过滤输出,仅显示包含字符串 (172.17.0.1) 的行,该字符串代表远程主机。

这些只是如何过滤 who 命令输出的几个示例。你可以结合这些技术来获取所需的特定信息。

总结

在本实验中,我们探索了 Linux 中的 who 命令,这是一个强大的工具,用于显示当前登录用户的信息。我们了解到,who 命令提供了诸如用户名、终端、登录时间以及用户登录的远程主机等详细信息。我们还发现了可以与 who 命令一起使用的各种选项,以自定义输出,例如显示更详细的视图、添加标题行或仅显示用户名。此外,我们学习了如何使用 who am i 命令来显示当前用户的信息。

Linux 命令速查表