誰が[閉じた]で最も古いユーザープロセス

誰が[閉じた]で最も古いユーザープロセス

コマンドにリストされている各ユーザーの最も古いプロセスを表示するにはどうすればよいですか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

おすすめ記事