我需要获取由用户启动的正在运行的任务。我尝试了几个命令,例如
xlsclients
此命令几乎满足了我的需求,但缺少用户信息。它一次性列出所有任务(实际上是窗口),但不包含用户名。
ps aux -u *username*
这给出了用户的进程,但也包括所有系统任务,例如:
/sbin/getty -8 38400 tty4
/usr/sbin/gpm -m /dev/input/mice -t exps2
ETC。
所以我想列出用户运行的任务但不包括与系统相关的任务。
答案1
如果你想要非孤儿流程:
pgrep -u "$USER"
打印当前用户启动的 PIDpgrep -u "$USER" -P 1
打印当前用户启动的孤立 PID
结合这些,你可以获得当前用户启动的非孤立 PID:
pgrep -u "$USER" | grep -Fvx "$(pgrep -u "$USER" -P 1)"
您可以将结果列表传递到ps
或top
其他程序中以获取每个进程的详细信息。