who中最古老的用户进程

who中最古老的用户进程

如何显示命令中列出的每个用户最旧的进程who?我尝试过使用命令

ps -u $user --sort +start_time

但找不到过滤用户并从中提取 PID 的方法。输出应该类似于:

user1 oldestprocessPID 

user2 oldestprocessPID

Linux版本:Ubuntu 18.04.5 LTS

答案1

给定某个用户名的最旧的 PIDuser可以通过

pgrep -U user -o

where-o负责返回最旧的 PID(请参阅pgrep手册)。

要为当前登录的所有用户运行此命令:

users | tr ' ' '\n' |
while read user; do
    printf '%s %d\n' "$user" "$(pgrep -U "$user" -o)"
done

这调用了users在一行中输出当前登录用户的实用程序。将用户名之间的空格更改tr为换行符,循环将这些空格一一读取到变量 中user。对于每个用户名,pgrep -U "$user" -o都会调用。其输出用作参数来printf格式化该特定用户的结果行。

read对于实用程序可以读取到分隔符-d(例如zsh和)的 shell bash,您可以像这样摆脱tr

users |
while read -d ' ' user; do
    printf '%s %d\n' "$user" "$(pgrep -U "$user" -o)"
done

相关内容