如何查看Linux当前登录用户 who/w命令对比分析

linux系统中查看当前登录用户主要使用who和w命令。1. who命令提供基础信息,显示用户名、终端、登录时间及来源ip;2. w命令在此基础上增加详细活动信息,包括用户空闲时间、cpu占用及当前执行的命令,适用于排查系统负载问题;3. 根据需求选择命令:快速确认在线用户用who,深入分析用户行为用w。两者互补,共同用于系统管理与监控。

如何查看Linux当前登录用户 who/w命令对比分析

linux系统里,想知道当前有哪些用户登录着,我们通常会用到两个核心命令:who和w。简单来说,who命令更像是一张点名册,它告诉你“谁在线”,以及他们是从哪里登录的、何时登录的。而w命令则在此基础上,提供了一个更详细的“他们在做什么”的实时快照,包括他们当前正在执行的命令。

如何查看Linux当前登录用户 who/w命令对比分析

解决方案

要查看当前登录用户,直接在终端输入相应的命令即可:

如何查看Linux当前登录用户 who/w命令对比分析

使用 who 命令:

who

输出示例:

如何查看Linux当前登录用户 who/w命令对比分析

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命令的输出通常分为两部分:

  1. 顶部摘要信息:

    • 当前时间: 命令执行时的系统时间。
    • 系统运行时间 (up): 系统自上次启动以来运行了多久。
    • 登录用户数: 当前登录系统的用户数量。
    • 平均负载 (load average): 过去1分钟、5分钟、15分钟的系统平均负载。这个指标反映了系统在一段时间内处理进程的繁忙程度。
  2. 用户详细信息列表:

    • 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系统管理员查看用户活动的基础。

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享