Grep
如果他們工作與否,如何獲取所有使用者並回顯?
grep
如果使用者登錄/工作與否,我如何獲取使用者列表(從命令行給出)並輸出?
perl -le 'print while $_=getpwent' | sort
會給你使用者名列表。
ps -eo user= | sort -u
會給你一個使用者名列表,其對應的 uid 是至少一個正在執行的程序的有效使用者 id。
who | awk '{print $1}' | sort -u
將列出目前登錄的使用者
printf '%s\n' "$@" | sort -u
將列出作為參數傳遞給腳本的使用者。
現在您有了這 4 個列表,您可以使用該
comm
命令來選擇其中哪些是任意兩個給定列表共有的,或者出現在一個列表中而不出現在另一個列表中。使用支持程序替換的 shell,您也可以不創建臨時文件。
例如:
#! /bin/bash - comm -12 <(printf '%s\n' "$@" | sort -u) \ <(ps -eo user= | sort -u)
稱為:
./my-script root mythul stephane
將報告這 3 個使用者中有哪些正在執行程序(假設您的系統上的使用者名和 uid 之間存在一對一的關係)。