Linux運維基礎之who命令詳解

Linux運維基礎之who命令詳解

Linux 中的 who 命令是一個命令列實用程式,用於顯示當前登入系統的使用者資訊。它能讓你快速瞭解哪些使用者登入了系統以及他們在做什麼。

who 命令的輸出通常包括使用者名稱、終端名稱(tty/pts)、登入日期和時間,以及使用者的遠端主機名稱(如果是從遠端位置登入)。

who 命令的一般語法:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ who [OPTIONS...]
$ who [OPTIONS...]
$ who [OPTIONS...]

1. 顯示所有使用者資訊

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
who -a
who -a
who -a

使用 -a 選項可以檢視登入到當前系統的每個使用者的所有詳細資訊。

示例:

下面是 who -a 命令可能顯示的輸出示例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
system boot 2023-07-09 08:15
run-level 5 2023-07-09 08:15
LOGIN tty1 2023-07-09 08:15 420 id=tty1
username + pts/0 2023-07-09 10:18 . 1025 (192.168.1.10)
system boot 2023-07-09 08:15 run-level 5 2023-07-09 08:15 LOGIN tty1 2023-07-09 08:15 420 id=tty1 username + pts/0 2023-07-09 10:18 . 1025 (192.168.1.10)
system boot  2023-07-09 08:15
run-level 5  2023-07-09 08:15
LOGIN        tty1         2023-07-09 08:15              420 id=tty1
username  +  pts/0        2023-07-09 10:18   .         1025 (192.168.1.10)

在此示例中:

  • system boot 2023-07-09 08:15 顯示系統上次啟動的時間。
  • run-level 5 2023-07-09 08:15 顯示系統當前的執行級別以及上次更改的時間。執行級別 5 通常表示系統處於圖形使用者介面的多使用者模式。
  • LOGIN tty1 2023-07-09 08:15 420 id=tty1 顯示指定時間在終端 tty1 上啟動的登入程序。數字 420 是登入程序的程序 ID,id=tty1 是終端的識別符號。
  • username + pts/0 2023-07-09 10:18 . 1025 (192.168.1.10) 顯示名為 username 的使用者在指定時間登入了偽終端 pts/0。+ 號表示允許使用者接收資訊。點( . )表示使用者處於活動狀態。數字 1025 是使用者 shell 的程序 ID,( 192.168.1.10 ) 是使用者登入的遠端主機的 IP 地址。

2. 顯示系統最後一次啟動時間

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
who -b
who -b
who -b

使用帶有 -b 選項的 who 命令列印系統最後一次啟動時間。

示例:

下面是 who -b 命令的輸出示例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
system boot 2023-07-09 08:17
system boot 2023-07-09 08:17
system boot  2023-07-09 08:17

在這個例子中:

  • system boot 表示所提供的資訊與系統啟動時間有關。
  • 2023-07-09 08:17 是系統最後一次啟動的日期和時間。

3. 列出所有登入使用者

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
who -q
who -q
who -q

該命令只顯示已登入使用者的名稱和已登入使用者的總數。選項 -q 代表 “快速”。

示例:

下面是 who -q 命令的輸出示例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
username1 username2 username3
# users=3
username1 username2 username3 # users=3
username1 username2 username3
# users=3

在此示例中:

  • username1username2, 和 username3 是當前登入系統的使用者名稱。
  • # users=3 表示當前登入系統的使用者總數。

4. 檢查使用者的寫入許可權

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
who -T
who -T
who -T

Linux 中的 who -t 命令用於顯示上次系統啟動時間。選項 -t 代表 “時間”。

示例:

讓我們輸入 who -T 命令,在終端中顯示使用者狀態。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
system boot 2023-07-09 08:15
system boot 2023-07-09 08:15
system boot  2023-07-09 08:15

在這個例子中:

  • system boot 表示系統最後一次啟動的時間。
  • 2023-07-09 08:15 是系統最後一次啟動的日期和時間。

5. 顯示所有死亡程序

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
who -d
who -d
who -d

Linux 中的 who -d 命令用於顯示已登入的使用者,但也包括由使用者啟動但當前處於 “死亡” 狀態的程序。這些程序由登入使用者啟動,但已不再與使用者會話相連。

示例:

輸入帶有 -d 選項的 who 命令,顯示所有死亡程序的詳細資訊。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
username pts/0 2023-07-09 10:18 (192.168.1.10)
username pts/1 2023-07-09 10:20 . 12345
username pts/0 2023-07-09 10:18 (192.168.1.10) username pts/1 2023-07-09 10:20 . 12345
username  pts/0        2023-07-09 10:18 (192.168.1.10)
username  pts/1        2023-07-09 10:20 .         12345

在本例中:

  • 第一行是普通使用者會話,類似於 who 命令的輸出。
  • 第二行代表一個 “死亡” 程序。第四列中的 . 表示該程序不再與使用者會話相連。最後的數字 12345 是死亡程序的程序 ID(PID)。

6. 顯示當前使用者的資訊

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
who -m
who -m
who -m

Linux 中的 who -m 命令用於顯示當前終端的資訊。-m 選項代表 “mesg”,是 “message” 的縮寫。它只顯示與當前終端有關的資訊。

示例:

下面是 who -m 命令的輸出示例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
username pts/0 2023-07-09 10:18
username pts/0 2023-07-09 10:18
username  pts/0        2023-07-09 10:18

在此示例中:

  • username 是登入使用者的名稱。
  • pts/0 是終端名稱。pts 代表偽終端從屬裝置。如果使用者通過物理終端登入,則應為 tty (電傳打字機)。
  • 2023-07-09 10:18 是使用者登入的日期和時間。

7. 顯示 INIT 程序產生的所有活動程序

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
who -p
who -p
who -p

who -p 命令顯示 init 系統生成的活動程序。不過,並非所有類 Unix 作業系統都提供此選項。

例如:

在可以使用該選項的系統上,可能會顯示類似下面的輸出:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
run-level 3 2023-07-09 10:18
run-level 3 2023-07-09 10:18
run-level 3  2023-07-09 10:18

本例中:

  • run-level 3 表示系統當前的執行級別。執行級別是類似 Unix 的作業系統(如 Linux)執行時的一種狀態或模式。不同的執行級別有不同的用途,並用數字表示。例如,執行級別 3 通常表示系統處於聯網的多使用者模式(具體含義因系統而異)。
  • 2023-07-09 10:18 是設定當前執行級別的日期和時間。

8. 顯示當前 runlevel

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
who -r
who -r
who -r

Linux 中的 who -r 命令顯示系統當前的執行級別。執行級別是系統的一種狀態,它定義了使用者可以使用哪些服務和資源。

例如:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
run-level 3 2023-07-09 10:18
run-level 3 2023-07-09 10:18
run-level 3  2023-07-09 10:18

在此示例中:

  • run-level 3 表示系統當前的執行級別。在本例中,執行級別是 3,這通常意味著系統處於多使用者模式,可以聯網(根據具體的 Linux 發行版本,執行級別會略有不同)。
  • 2023-07-09 10:18 是當前執行級別最後一次更改的日期和時間。

更多 Linux 命令

下面羅列了最常見的一些 Linux 命令,您可以根據自己的需要查閱對應命令的詳細解析:

目錄操作 rmdir · cd · pwd · exa · ls
檔案操作 cat · cp · dd · less · touch · ln · rename · more · head
檔案系統操作 chown · mkfs · locate
網路 ping · curl · wget · iptables · mtr
搜尋和文字處理 find · grep · sed · whatis · ripgrep · fd · tldr
系統資訊和管理 env · history · top · who · htop · glances · lsof
使用者和會話管理 screen · su · sudo · open

此外,我們還整理 Linux 命令列大全,以幫助大家全面深入地學習 Linux。

評論留言