Linux ps命令的输出可以通过用户和命令过滤吗?

我需要一个进程的PID给它的主人和命令。 我可以使用“ps -u xxx”和其命令“ps -Cyyy”过滤每个用户的进程,但是当我尝试“ps -u xxx -Cyyy”时,它们使用OR逻辑组合。 我需要AND逻辑。 我怎样才能做到这一点?

使用pgrep?

pgrep -U xxx yyy 

它只返回pid(或者pid,如果有多个进程匹配的话)。

使用grep?

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

您可以使用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,你可以使用进程replace来避免临时文件的需要:

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