如何查看Linux當(dāng)前登錄用戶 who/w命令對(duì)比分析

linux系統(tǒng)中查看當(dāng)前登錄用戶主要使用who和w命令。1. who命令提供基礎(chǔ)信息,顯示用戶名、終端、登錄時(shí)間及來源ip;2. w命令在此基礎(chǔ)上增加詳細(xì)活動(dòng)信息,包括用戶空閑時(shí)間、cpu占用及當(dāng)前執(zhí)行的命令,適用于排查系統(tǒng)負(fù)載問題;3. 根據(jù)需求選擇命令:快速確認(rèn)在線用戶用who,深入分析用戶行為用w。兩者互補(bǔ),共同用于系統(tǒng)管理與監(jiān)控。

如何查看Linux當(dāng)前登錄用戶 who/w命令對(duì)比分析

linux系統(tǒng)里,想知道當(dāng)前有哪些用戶登錄著,我們通常會(huì)用到兩個(gè)核心命令:who和w。簡(jiǎn)單來說,who命令更像是一張點(diǎn)名冊(cè),它告訴你“誰在線”,以及他們是從哪里登錄的、何時(shí)登錄的。而w命令則在此基礎(chǔ)上,提供了一個(gè)更詳細(xì)的“他們?cè)谧鍪裁础钡膶?shí)時(shí)快照,包括他們當(dāng)前正在執(zhí)行的命令。

如何查看Linux當(dāng)前登錄用戶 who/w命令對(duì)比分析

解決方案

要查看當(dāng)前登錄用戶,直接在終端輸入相應(yīng)的命令即可:

如何查看Linux當(dāng)前登錄用戶 who/w命令對(duì)比分析

使用 who 命令:

who

輸出示例:

如何查看Linux當(dāng)前登錄用戶 who/w命令對(duì)比分析

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系統(tǒng)中最直接、最基礎(chǔ)的用戶登錄信息工具。它就像是系統(tǒng)的一個(gè)簡(jiǎn)報(bào),告訴你當(dāng)前有哪些“活著的”會(huì)話。當(dāng)你執(zhí)行who,它會(huì)列出每個(gè)登錄用戶的信息,通常包括:

  • 用戶名 (USER/NAME): 登錄系統(tǒng)的用戶賬號(hào)。
  • 終端 (TTY/LINE): 用戶登錄所使用的終端設(shè)備,比如pts/0(偽終端,通常用于ssh或圖形界面終端模擬器)或tty1(物理控制臺(tái))。
  • 登錄時(shí)間 (LOGIN TIME): 用戶登錄系統(tǒng)的時(shí)間。
  • 來源 (FROM/HOST): 如果用戶是從遠(yuǎn)程登錄的,這里會(huì)顯示他們的IP地址或主機(jī)名。本地登錄通常不會(huì)顯示。

這個(gè)命令的輸出非常簡(jiǎn)潔,對(duì)于快速了解系統(tǒng)上是不是有人登錄,或者某個(gè)特定用戶是否在線,它非常高效。我通常用它來做個(gè)快速的“點(diǎn)名”,比如確認(rèn)一下我的同事是不是已經(jīng)連上服務(wù)器了。它的輸出不會(huì)告訴你用戶在做什么,僅僅是存在的事實(shí)。

w命令深度解析:不僅是“誰”,更是“在做什么”?

相較于who的簡(jiǎn)潔,w命令則提供了更豐富、更深入的用戶活動(dòng)信息。它不僅僅告訴你“誰在線”,更重要的是,它告訴你“他們?cè)诿π┦裁础薄_@對(duì)于系統(tǒng)管理員來說,簡(jiǎn)直是排查問題、監(jiān)控系統(tǒng)狀態(tài)的利器。當(dāng)我看到系統(tǒng)負(fù)載有點(diǎn)高,或者想知道某個(gè)用戶是不是在運(yùn)行什么耗資源的操作時(shí),w命令就是我的首選。

w命令的輸出通常分為兩部分:

  1. 頂部摘要信息:

    • 當(dāng)前時(shí)間: 命令執(zhí)行時(shí)的系統(tǒng)時(shí)間。
    • 系統(tǒng)運(yùn)行時(shí)間 (up): 系統(tǒng)自上次啟動(dòng)以來運(yùn)行了多久。
    • 登錄用戶數(shù): 當(dāng)前登錄系統(tǒng)的用戶數(shù)量。
    • 平均負(fù)載 (load average): 過去1分鐘、5分鐘、15分鐘的系統(tǒng)平均負(fù)載。這個(gè)指標(biāo)反映了系統(tǒng)在一段時(shí)間內(nèi)處理進(jìn)程的繁忙程度。
  2. 用戶詳細(xì)信息列表:

    • USER: 登錄的用戶名。
    • TTY: 用戶登錄所使用的終端。
    • FROM: 用戶登錄的來源IP地址或主機(jī)名。
    • LOGIN@: 用戶登錄系統(tǒng)的時(shí)間。
    • IDLE: 用戶空閑時(shí)間。如果用戶正在操作,這個(gè)值會(huì)很小;如果用戶長時(shí)間沒有輸入,這個(gè)值會(huì)逐漸增大。
    • JCPU: 用戶所有進(jìn)程占用的CPU時(shí)間總和。這包括當(dāng)前會(huì)話中所有進(jìn)程(包括已結(jié)束的)所消耗的CPU時(shí)間。
    • PCPU: 用戶當(dāng)前正在運(yùn)行的進(jìn)程所占用的CPU時(shí)間。這個(gè)值通常指的是“WHAT”列中顯示的那個(gè)進(jìn)程。
    • WHAT: 用戶當(dāng)前正在執(zhí)行的命令或程序。這是w命令最有價(jià)值的部分,它能讓你一眼看出用戶正在做什么。

舉個(gè)例子,如果我看到某個(gè)用戶的WHAT列顯示htop或者make -j8,我立刻就能明白這個(gè)用戶可能在進(jìn)行系統(tǒng)監(jiān)控或者編譯大型項(xiàng)目,這有助于我判斷系統(tǒng)負(fù)載高的原因。

who與w:何時(shí)選擇,如何取舍?

在我的日常工作中,who和w都有它們各自的用武之地,但選擇哪個(gè),真的取決于我當(dāng)時(shí)想獲取什么信息。

如果我只是想快速確認(rèn)一下,比如,“服務(wù)器上是不是有其他人在?”或者“我那個(gè)遠(yuǎn)程會(huì)話是不是還開著?”——這種情況下,who命令無疑是最佳選擇。它的輸出簡(jiǎn)潔明了,一眼就能掃到關(guān)鍵信息,沒有多余的干擾。它就像是快速瀏覽一個(gè)房間,看看誰在里面,不關(guān)心他們?cè)诹氖裁础?/p>

然而,如果我面臨的是一個(gè)更復(fù)雜的問題,比如“為什么系統(tǒng)響應(yīng)變慢了?”或者“某個(gè)用戶是不是在后臺(tái)跑了什么我不知道的程序?”——這時(shí),我?guī)缀鯐?huì)毫不猶豫地選擇w命令。w提供的IDLE、JCPU、PCPU以及最重要的WHAT列,就像給我打開了一扇窗,讓我能窺探到每個(gè)用戶會(huì)話的實(shí)時(shí)活動(dòng)。通過WHAT列,我能迅速定位到可能導(dǎo)致系統(tǒng)壓力的進(jìn)程,比如一個(gè)長時(shí)間運(yùn)行的編譯任務(wù)、一個(gè)資源密集型的數(shù)據(jù)庫查詢,或者甚至是某個(gè)不小心啟動(dòng)的無限循環(huán)腳本。雖然它的輸出信息量更大,看起來可能有點(diǎn)“亂”,但它提供的深度信息是who無法比擬的。

所以,我的經(jīng)驗(yàn)是:需要快速概覽,用who;需要深入分析用戶行為或排查問題,w才是真正的利器。它們不是相互替代的關(guān)系,而是互補(bǔ)的工具,共同構(gòu)成了Linux系統(tǒng)管理員查看用戶活動(dòng)的基礎(chǔ)。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊8 分享