介绍
在本实验中,我们将探索 Linux 的 who
命令,这是一个强大的工具,用于显示当前登录用户的信息。我们将了解 who
命令的基本用法,学习如何过滤其输出,并探索它提供的不同字段。本实验涵盖了用户和权限管理的主题,这是系统管理员和用户理解系统当前活动的一项基本技能。
实验包括三个主要步骤:理解 who
命令、探索 who
命令的输出以及过滤 who
命令的输出。通过这些步骤,你将全面了解 who
命令及其实际应用。
在本实验中,我们将探索 Linux 的 who
命令,这是一个强大的工具,用于显示当前登录用户的信息。我们将了解 who
命令的基本用法,学习如何过滤其输出,并探索它提供的不同字段。本实验涵盖了用户和权限管理的主题,这是系统管理员和用户理解系统当前活动的一项基本技能。
实验包括三个主要步骤:理解 who
命令、探索 who
命令的输出以及过滤 who
命令的输出。通过这些步骤,你将全面了解 who
命令及其实际应用。
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
命令的输出包含以下字段:
labex
。pts/0
。2023-04-11 09:15
。(172.17.0.1)
。现在,让我们更详细地探讨这些字段:
用户名 (Username):用户名字段显示当前登录用户的名称。这与你登录的用户名相同,在此示例中为 labex
。
终端 (Terminal):终端字段显示用户登录的终端或会话。在典型的 Linux 系统中,你可能会看到诸如 tty1
、pts/0
、pts/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
命令现在显示两个登录用户:labex
和 testuser
。
who
命令的输出在这一步中,我们将学习如何过滤 who
命令的输出以获取特定信息。
who
命令可能会生成大量输出,尤其是在有多用户登录的系统中。为了过滤输出,我们可以使用各种命令行工具,例如 grep
、awk
和 cut
。
让我们从过滤输出以仅显示用户名开始:
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
命令来显示当前用户的信息。