コマンドにリストされている各ユーザーの最も古いプロセスを表示するにはどうすればよいですかwho
?私はコマンドを使ってみました。
ps -u $user --sort +start_time
ただし、ユーザーをフィルタリングしてPIDを抽出する方法はありません。出力は次のようになります。
user1 oldestprocessPID
user2 oldestprocessPID
Linuxバージョン:Ubuntu 18.04.5 LTS
答え1
特定のユーザー名が指定された最も古いPIDは、user
次のようになります。
pgrep -U user -o
-o
最も古いPIDを返す責任はどこにあります(pgrep
マニュアルを参照)。
現在ログインしているすべてのユーザーに対してこのコマンドを実行するには、次のようにします。
users | tr ' ' '\n' |
while read user; do
printf '%s %d\n' "$user" "$(pgrep -U "$user" -o)"
done
users
現在ログインしているユーザーを1行に印刷するユーティリティを呼び出します。ユーザー名間のスペースをtr
改行に変更し、ループを介してこれらのスペースを変数として1つずつ読み込みますuser
。各ユーザー名に対してpgrep -U "$user" -o
呼び出されます。その出力は、特定printf
のユーザーの結果行をフォーマットするためのパラメーターとして使用されます。
read
ユーティリティーが区切り文字-d
(たとえば、および)を読み取ることができるzsh
シェルの場合は、bash
次のように処理できますtr
。
users |
while read -d ' ' user; do
printf '%s %d\n' "$user" "$(pgrep -U "$user" -o)"
done