# Linux系統中如何用who命令
## 一、who命令概述
`who`命令是Linux系統中一個基礎但強大的實用工具,用于顯示當前登錄系統的用戶信息。作為系統管理員和普通用戶常用的命令之一,它能夠快速提供用戶會話的詳細信息,包括登錄用戶名、終端設備、登錄時間以及來源IP地址(如果適用)等。
### 1.1 命令基本功能
- 顯示當前登錄用戶列表
- 查看用戶登錄時間
- 識別用戶使用的終端設備
- 顯示系統啟動時間(特定選項)
### 1.2 命令特點
- 輕量級,執行速度快
- 無需特殊權限即可運行
- 信息直接來源于/var/run/utmp文件
- 支持多種格式化輸出選項
## 二、基本語法與常用選項
### 2.1 基本命令格式
```bash
who [選項] [文件]
選項 | 功能描述 |
---|---|
-a | 顯示所有信息(相當于-b -d –login -p -r -t -T -u) |
-b | 顯示系統最近啟動時間 |
-d | 顯示已退出的進程 |
-H | 顯示列標題 |
-q | 快速模式,只顯示用戶名和用戶數 |
-r | 顯示運行級別 |
-s | 簡略顯示(默認選項) |
-u | 顯示空閑時間 |
-T | 顯示用戶消息狀態(+:允許消息;-:禁止消息;?: 無法確定終端) |
who
典型輸出:
user1 pts/0 2023-08-15 09:30 (192.168.1.100)
user2 tty2 2023-08-15 10:15 (:0)
who -H
輸出示例:
NAME LINE TIME COMMENT
user1 pts/0 2023-08-15 09:30 (192.168.1.100)
who -b
輸出:
system boot 2023-08-15 08:30
who -a
輸出包含: - 系統啟動時間 - 運行級別變化 - 用戶登錄記錄 - 死進程信息
who -q
輸出:
user1 user2
# users=2
who -T
輸出中消息狀態指示:
user1 + pts/0 2023-08-15 09:30 (192.168.1.100)
who | wc -l # 統計當前登錄用戶數
who | grep pts/0 # 查找特定終端的登錄信息
[用戶名] [終端線路] [登錄時間] [遠程主機名/IP]
ttyX
:物理終端pts/X
:偽終端(SSH/Xshell等遠程連接):0
或空/var/run/utmp
who
命令的主要數據源/var/log/wtmp
last
命令查看/var/log/btmp
lastb
命令查看可能原因: - utmp文件損壞 - 權限問題(需檢查/var/run/utmp權限)
解決方案:
sudo touch /var/run/utmp
sudo chmod 644 /var/run/utmp
原因分析: - 用戶會話異常終止 - 終端設備未正確釋放
解決方法:
ps -ft <終端名> # 查找相關進程
kill -9 <PID> # 終止殘留進程
who -u | awk '{if($5 > 24:00) print $0}' # 檢測長時間空閑會話
#!/bin/bash
LOG_FILE="/var/log/user_audit.log"
echo "$(date) - Current users:" >> $LOG_FILE
who -a >> $LOG_FILE
who
:只顯示基本信息w
:額外顯示用戶當前進程和系統負載users
:僅顯示用戶名列表who
:提供詳細信息last
:查看歷史登錄記錄who
:只顯示當前會話who
命令作為Linux用戶管理的基礎工具,雖然簡單但功能實用。通過掌握其各種選項和組合用法,可以有效地監控系統登錄狀態、進行基本的系統審計以及排查用戶會話問題。建議系統管理員將who
命令納入日常維護工具箱,結合其他命令如w
、last
等,構建完整的用戶會話監控方案。
注意:不同Linux發行版的
who
命令可能有細微差別,建議通過man who
查看具體系統的手冊頁獲取最準確的信息。 “`
這篇文章共計約1500字,采用Markdown格式編寫,包含: - 多級標題結構 - 代碼塊示例 - 表格展示 - 有序/無序列表 - 強調文本 - 實際命令示例 - 問題解決方案 - 相關命令對比等內容
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。