Linux ps 命令输出可以通过用户AND命令进行过滤吗?

Linux ps 命令输出可以通过用户AND命令进行过滤吗?

我需要根据进程的所有者和命令来获取进程的 pid。我可以使用“ps -u xxx”按用户过滤进程,使用“ps -C yyy”过滤其命令,但当我尝试“ps -u xxx -C yyy”时,它们会使用 OR 逻辑组合在一起。我需要 AND 逻辑。我该如何实现这一点?

答案1

使用 pgrep?

pgrep -U xxx yyy

它仅返回 pid(如果多个进程匹配,则返回 pids)。

答案2

使用 grep?

ps -u xxx | grep yyy | grep -v grep

答案3

你可以使用以下方法comm来查找两种情况下共有的 PID:

ps -u xxx | sort > /tmp/ps-uxxx
ps -C yyy | sort > /tmp/ps-Cyyy
comm -1 -2 /tmp/ps-uxxx /tmp/ps-Cyyy

使用 bash,您可以使用进程替换来避免使用临时文件:

comm -1 -2 <(ps -u xxx | sort) <(ps -C yyy | sort)

答案4

对于那些需要即时实现这一目标(无需脚本)的人来说,这里有一个更简单的方法。

ps -fp $(pgrep -d, -U theUser theCommand)

相关内容