简介
在这个实验中,你将学习如何查看当前哪些用户已登录到 Linux 系统。你将探索一些基础命令,如使用 who
命令列出已登录的用户,使用 w
命令获取有关他们会话和活动的更详细信息。
在本实验结束时,你将能够快速识别 Linux 系统上的活跃用户,并了解他们登录会话的基本信息,包括如何查看 /var/run/utmp
中的登录记录。
在这个实验中,你将学习如何查看当前哪些用户已登录到 Linux 系统。你将探索一些基础命令,如使用 who
命令列出已登录的用户,使用 w
命令获取有关他们会话和活动的更详细信息。
在本实验结束时,你将能够快速识别 Linux 系统上的活跃用户,并了解他们登录会话的基本信息,包括如何查看 /var/run/utmp
中的登录记录。
在这一步中,你将学习如何使用 who
命令列出当前已登录到系统的用户。对于系统管理员和普通用户来说,这是一个查看系统上哪些用户处于活跃状态的基础命令。
who
命令会显示当前已登录用户的信息。这些信息通常包括用户名、他们使用的终端线路、登录时间,以及他们登录的远程主机(如果适用)。
让我们来试试看。如果终端尚未打开,请打开它。你可以在桌面左侧找到 Xfce Terminal 图标。
输入以下命令并按回车键:
who
你应该会看到类似以下的输出:
labex :0 <timestamp> (:0)
让我们来分析一下这个输出:
labex
:这是已登录用户的用户名。在这个 LabEx 环境中,默认用户是 labex
。:0
:这表示正在使用的终端线路或显示器。:0
通常指的是主图形显示器。<timestamp>
:这显示了用户登录的日期和时间。时间戳的确切格式和内容可能会略有不同。(:0)
:这通常会提供有关登录会话的额外信息,在这种情况下,是确认显示器的信息。who
命令虽然简单,但对于快速查看谁在使用系统非常有用。这是了解用户活动的良好第一步。
记住,实践是关键!多运行几次这个命令,以便熟悉它。
点击 继续 进入下一步。
在这一步中,你将探索 w
命令,该命令能提供当前已登录用户的更详细信息以及他们正在进行的操作。虽然 who
命令能快速列出用户,但 w
命令能提供与用户会话相关的系统当前活动的快照。
w
命令会显示哪些用户已登录以及他们正在做什么。它是监控系统使用情况和识别与每个用户关联的活跃进程的便捷工具。
让我们在终端中运行 w
命令。如果你关闭了终端,请再次打开 Xfce Terminal。
输入以下命令并按回车键:
w
你应该会看到类似以下的输出:
<timestamp> up <uptime>, <users> users, load average: <load_avg>
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
labex :0 :0 <login_time> <idle_time> <jcpu_time> <pcpu_time> w
让我们来分析一下输出的不同部分:
<timestamp>
:当前时间。up <uptime>
:系统自上次启动以来运行的时长。<users> users
:当前已登录的用户数量。load average: <load_avg>
:系统在过去 1 分钟、5 分钟和 15 分钟内的平均负载。这表示等待运行的进程的平均数量。USER
、TTY
、FROM
、LOGIN@
、IDLE
、JCPU
、PCPU
、WHAT
)描述了每个已登录用户后续列的含义。USER
:用户名。TTY
:用户正在使用的终端线路。FROM
:用户登录的远程主机(如果适用)。对于像这样的本地图形会话,通常显示为 :0
。LOGIN@
:用户登录的时间。IDLE
:终端的空闲时间。JCPU
:与该终端关联的所有进程使用的时间。PCPU
:当前进程使用的时间。WHAT
:用户当前进程的命令行。在这种情况下,显示为 w
,因为这是你刚刚运行的命令。与 who
命令相比,w
命令能提供更动态的视图,不仅显示哪些用户已登录,还显示他们正在积极进行的操作。
尝试使用 w
命令。你会发现它对于快速评估系统活动很有用。
点击 继续 进入下一步。
在这一步中,你将了解 /var/run/utmp
文件,以及像 who
和 w
这样的命令是如何从该文件获取信息的。这个文件是 Linux 跟踪哪些用户已登录系统的关键部分。
/var/run/utmp
文件是一个二进制文件,包含当前已登录到系统的用户信息。当用户登录和注销时,该文件会不断更新。像 who
、w
和 users
这样的命令会读取这个文件以显示当前的登录信息。
由于 /var/run/utmp
是一个二进制文件,你不能像查看文本文件那样,简单地使用 cat
或 less
等命令来查看其内容。这样做会得到无法读取的字符。
让我们尝试使用 cat
命令来查看它,看看会发生什么(并理解为什么我们不这样做):
cat /var/run/utmp
你会看到很多乱码字符,对于二进制文件来说,这是意料之中的。
<binary_output>
要以人类可读的格式读取 /var/run/utmp
的内容,你通常需要使用专门用于解析该文件的命令,比如你在前面步骤中使用过的 who
或 w
。
另一个专门用于读取和显示 /var/run/utmp
内容的命令是 utmpdump
。这个命令对于调试或检查文件中的原始数据很有用。
让我们使用 utmpdump
来查看 /var/run/utmp
的内容。
utmpdump /var/run/utmp
你应该会看到结构化且可读的输出,显示每个登录会话的记录。确切的输出将取决于系统的当前状态,但大致如下:
Utmp dump of /var/run/utmp
[<type>] [<pid>] [<line>] [<id>] [<user>] [<host>] [<exit>] [<session>] [<tv_sec>] [<tv_usec>] [<addr_v6>]
...
[7] [ <pid> ] [ :0 ] [ :0 ] [ labex ] [ :0 ] [ 0, 0 ] [ <session_id> ] [ <timestamp> ] [ <usec> ] [ <ipv6_address> ]
...
输出显示了 utmp
文件中每个条目的各个字段,包括条目类型(如用户登录)、进程 ID、终端线路、用户名、主机、登录时间等等。
了解 /var/run/utmp
有助于你理解 Linux 是如何跟踪用户会话的,以及像 who
和 w
这样的命令在底层是如何工作的。
点击 继续 完成本次实验。
在本次实验中,你学习了如何检查 Linux 系统上当前有哪些用户已登录。你首先使用了 who
命令,该命令能提供已登录用户的基本列表,包括他们的终端、登录时间和来源。这个命令是快速识别活跃用户的基础工具。
在使用 who
命令之后,你探索了 w
命令。虽然在节选内容中没有提供 w
命令的完整详细信息,但它被介绍为一个工具,能提供关于已登录用户及其当前活动的更详细信息,比 who
命令提供的简单列表更丰富。