在linux系统中查看当前登录用户主要使用who和w命令。1. who命令提供基础信息,显示用户名、终端、登录时间及来源ip;2. w命令在此基础上增加详细活动信息,包括用户空闲时间、cpu占用及当前执行的命令,适用于排查系统负载问题;3. 根据需求选择命令:快速确认在线用户用who,深入分析用户行为用w。两者互补,共同用于系统管理与监控。
在linux系统里,想知道当前有哪些用户登录着,我们通常会用到两个核心命令:who和w。简单来说,who命令更像是一张点名册,它告诉你“谁在线”,以及他们是从哪里登录的、何时登录的。而w命令则在此基础上,提供了一个更详细的“他们在做什么”的实时快照,包括他们当前正在执行的命令。
解决方案
要查看当前登录用户,直接在终端输入相应的命令即可:
使用 who 命令:
who
输出示例:
user1 pts/0 2024-05-15 10:30 (192.168.1.100) user2 pts/1 2024-05-15 11:05 (192.168.1.101)
使用 w 命令:
w
输出示例:
11:45:01 up 1:15, 2 users, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT user1 pts/0 192.168.1.100 10:30 1:15m 0.00s 0.00s bash user2 pts/1 192.168.1.101 11:05 0.00s 0.01s 0.00s vim index.html
who命令详解:它能告诉你什么?
who命令,在我看来,是Linux系统中最直接、最基础的用户登录信息工具。它就像是系统的一个简报,告诉你当前有哪些“活着的”会话。当你执行who,它会列出每个登录用户的信息,通常包括:
- 用户名 (USER/NAME): 登录系统的用户账号。
- 终端 (TTY/LINE): 用户登录所使用的终端设备,比如pts/0(伪终端,通常用于ssh或图形界面终端模拟器)或tty1(物理控制台)。
- 登录时间 (LOGIN TIME): 用户登录系统的时间。
- 来源 (FROM/HOST): 如果用户是从远程登录的,这里会显示他们的IP地址或主机名。本地登录通常不会显示。
这个命令的输出非常简洁,对于快速了解系统上是不是有人登录,或者某个特定用户是否在线,它非常高效。我通常用它来做个快速的“点名”,比如确认一下我的同事是不是已经连上服务器了。它的输出不会告诉你用户在做什么,仅仅是存在的事实。
w命令深度解析:不仅是“谁”,更是“在做什么”?
相较于who的简洁,w命令则提供了更丰富、更深入的用户活动信息。它不仅仅告诉你“谁在线”,更重要的是,它告诉你“他们在忙些什么”。这对于系统管理员来说,简直是排查问题、监控系统状态的利器。当我看到系统负载有点高,或者想知道某个用户是不是在运行什么耗资源的操作时,w命令就是我的首选。
w命令的输出通常分为两部分:
-
顶部摘要信息:
- 当前时间: 命令执行时的系统时间。
- 系统运行时间 (up): 系统自上次启动以来运行了多久。
- 登录用户数: 当前登录系统的用户数量。
- 平均负载 (load average): 过去1分钟、5分钟、15分钟的系统平均负载。这个指标反映了系统在一段时间内处理进程的繁忙程度。
-
用户详细信息列表:
- USER: 登录的用户名。
- TTY: 用户登录所使用的终端。
- FROM: 用户登录的来源IP地址或主机名。
- LOGIN@: 用户登录系统的时间。
- IDLE: 用户空闲时间。如果用户正在操作,这个值会很小;如果用户长时间没有输入,这个值会逐渐增大。
- JCPU: 用户所有进程占用的CPU时间总和。这包括当前会话中所有进程(包括已结束的)所消耗的CPU时间。
- PCPU: 用户当前正在运行的进程所占用的CPU时间。这个值通常指的是“WHAT”列中显示的那个进程。
- WHAT: 用户当前正在执行的命令或程序。这是w命令最有价值的部分,它能让你一眼看出用户正在做什么。
举个例子,如果我看到某个用户的WHAT列显示htop或者make -j8,我立刻就能明白这个用户可能在进行系统监控或者编译大型项目,这有助于我判断系统负载高的原因。
who与w:何时选择,如何取舍?
在我的日常工作中,who和w都有它们各自的用武之地,但选择哪个,真的取决于我当时想获取什么信息。
如果我只是想快速确认一下,比如,“服务器上是不是有其他人在?”或者“我那个远程会话是不是还开着?”——这种情况下,who命令无疑是最佳选择。它的输出简洁明了,一眼就能扫到关键信息,没有多余的干扰。它就像是快速浏览一个房间,看看谁在里面,不关心他们在聊什么。
然而,如果我面临的是一个更复杂的问题,比如“为什么系统响应变慢了?”或者“某个用户是不是在后台跑了什么我不知道的程序?”——这时,我几乎会毫不犹豫地选择w命令。w提供的IDLE、JCPU、PCPU以及最重要的WHAT列,就像给我打开了一扇窗,让我能窥探到每个用户会话的实时活动。通过WHAT列,我能迅速定位到可能导致系统压力的进程,比如一个长时间运行的编译任务、一个资源密集型的数据库查询,或者甚至是某个不小心启动的无限循环脚本。虽然它的输出信息量更大,看起来可能有点“乱”,但它提供的深度信息是who无法比拟的。
所以,我的经验是:需要快速概览,用who;需要深入分析用户行为或排查问题,w才是真正的利器。它们不是相互替代的关系,而是互补的工具,共同构成了Linux系统管理员查看用户活动的基础。