Linux 中的 users 命令詳解
users 是 Linux 系統(tǒng)中的一個簡單但實用的命令行工具,用于顯示當(dāng)前登錄到系統(tǒng)的所有用戶名。它會從 /var/run/utmp 或 /var/log/wtmp 文件中讀取登錄記錄,并以空格分隔的形式輸出所有當(dāng)前登錄用戶的用戶名。
命令是干什么的
- 顯示登錄用戶:列出當(dāng)前所有活躍登錄會話對應(yīng)的用戶名,輸出為一行以空格分隔的用戶名列表。
- 重復(fù)顯示規(guī)則:如果一個用戶有多個登錄會話(如通過多個終端窗口或 SSH 連接登錄),該用戶名會在輸出中重復(fù)顯示相應(yīng)次數(shù)。
- 數(shù)據(jù)來源:默認讀取系統(tǒng)登錄記錄文件/var/run/utmp 獲取當(dāng)前登錄信息,也可指定其他文件。
命令怎么用
- 基本語法:
users [OPTION]...[FILE],方括號內(nèi)為可選參數(shù)。 - 常用選項:
--help:顯示幫助信息并退出。--version:顯示版本信息并退出。
- 文件參數(shù):不指定時讀取默認系統(tǒng)文件,也可手動指定其他登錄記錄文件路徑。百科
基本語法
users [選項] [文件]
常用選項:
--help:顯示幫助信息--version:顯示版本信息
參數(shù)說明:
[文件]:指定要讀取的登錄記錄文件,默認為 /var/run/utmp
使用示例
查看當(dāng)前登錄用戶
最簡單的用法是直接運行 users 命令:
$ users alice bob charlie alice
輸出顯示當(dāng)前有四個登錄會話,其中用戶 alice 登錄了兩次(可能從不同終端或會話登錄)。
指定登錄記錄文件
可以指定其他登錄記錄文件,比如查看歷史登錄記錄:
$ users /var/log/wtmp
這會顯示 /var/log/wtmp 文件中記錄的所有登錄用戶(包括歷史登錄)。
與其他命令結(jié)合使用
users 命令的輸出通常與其他命令結(jié)合使用,進行進一步處理:
# 統(tǒng)計不同用戶數(shù)量
$ users | tr ' ' '\n' | sort | uniq | wc -l
3
# 查看每個用戶的登錄次數(shù)
$ users | tr ' ' '\n' | sort | uniq -c
2 alice
1 bob
1 charlie工作原理
users 命令的工作原理相對簡單:
- 讀取登錄記錄:默認從 /var/run/utmp 文件讀取當(dāng)前登錄會話信息
- 解析用戶信息:從每條記錄中提取用戶名
- 輸出結(jié)果:將所有用戶名以空格分隔的形式輸出
相關(guān)文件說明:
- /var/run/utmp:記錄當(dāng)前系統(tǒng)的登錄會話信息
- /var/log/wtmp:記錄歷史登錄/注銷信息
- /var/log/btmp:記錄失敗的登錄嘗試
與其他命令的比較
usersvswho
| 命令 | 輸出格式 | 信息詳細程度 | 主要用途 |
|---|---|---|---|
| users | 用戶名列表(空格分隔) | 簡單,只顯示用戶名 | 快速查看誰在登錄 |
| who | 每行一個用戶,包含終端、時間等 | 詳細 | 查看登錄會話的詳細信息 |
示例對比:
$ users alice bob charlie $ who alice tty1 2025-05-20 08:15 bob pts/0 2025-05-20 08:20 (192.168.1.100) charlie pts/1 2025-05-20 08:25 (192.168.1.101)
usersvsw
w 命令顯示的信息更加全面,包括用戶正在執(zhí)行的命令和系統(tǒng)負載:
$ w 08:30:01 up 2 days, 3:15, 3 users, load average: 0.05, 0.10, 0.15 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT alice tty1 - 08:15 15:00 0.05s 0.05s -bash bob pts/0 192.168.1.100 08:20 0.00s 0.10s 0.05s vim file.txt charlie pts/1 192.168.1.101 08:25 5:00 0.03s 0.03s top
實際應(yīng)用場景
系統(tǒng)監(jiān)控腳本
在自動化腳本中,可以使用 users 命令快速檢查是否有用戶登錄:
#!/bin/bash
# 檢查是否有用戶登錄
if [ -n "$(users)" ]; then
echo "有用戶登錄到系統(tǒng)"
echo "當(dāng)前登錄用戶:$(users)"
else
echo "沒有用戶登錄"
fi用戶活動統(tǒng)計
結(jié)合其他工具進行用戶活動分析:
# 統(tǒng)計最近24小時內(nèi)的活躍用戶
$ last -24hours | awk '{print $1}' | sort | uniq
alice
bob
charlie
david
# 與 users 命令結(jié)果對比
$ users
alice bob charlie安全審計
檢查異常登錄情況:
# 監(jiān)控非工作時間登錄
#!/bin/bash
CURRENT_HOUR=$(date +%H)
if [ $CURRENT_HOUR -lt 8 ] || [ $CURRENT_HOUR -gt 18 ]; then
LOGGED_USERS=$(users)
if [ -n "$LOGGED_USERS" ]; then
echo "非工作時間有用戶登錄:$LOGGED_USERS"
echo "時間:$(date)"
# 可以添加郵件或日志記錄邏輯
fi
fi注意事項
- 權(quán)限要求:讀取 /var/run/utmp 文件通常需要 root 權(quán)限或相應(yīng)的讀取權(quán)限
- 輸出格式:用戶名以空格分隔,如果用戶名包含空格可能會造成解析困難
- 會話計數(shù):同一個用戶從多個終端登錄會多次出現(xiàn)在輸出中
- 時間信息:users 命令不顯示登錄時間,需要結(jié)合 who 或 last 命令查看
- 網(wǎng)絡(luò)登錄:對于 SSH 等網(wǎng)絡(luò)登錄,users 會顯示用戶名但不顯示來源 IP
總結(jié)
users 命令雖然簡單,但在日常系統(tǒng)管理和監(jiān)控中非常有用。它提供了最快捷的方式來查看當(dāng)前誰登錄了系統(tǒng),特別適合在腳本中快速檢查用戶登錄狀態(tài)。對于需要更詳細信息的場景,可以結(jié)合 who、w、last 等命令使用。
記?。汉唵尾淮頍o用,users 正是 Unix/Linux 哲學(xué)"一個工具做好一件事"的完美體現(xiàn)。
到此這篇關(guān)于Linux 中的 users 命令詳解的文章就介紹到這了,更多相關(guān)Linux users 命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Bash腳本啟動多個Chrome瀏覽器窗口并自動清理的實現(xiàn)過程
今天就給大家分享一個Bash腳本,通過簡潔高效的方式解決了啟動多個Chrome實例并自動清理的問題,特別適合Web自動化測試和多窗口展示場景,通過設(shè)置alias,用戶可以瞬間完成操作,無需復(fù)雜的配置,希望這篇補充內(nèi)容能為開發(fā)者和測試人員提供更清晰、更實用的腳本參考!2025-09-09

