我用ps ef
了ps rf
很多。
这是一个示例输出ps rf
:
PID TTY STAT TIME COMMAND
3476 pts/0 S 0:00 su ...
3477 pts/0 S 0:02 \_ bash
8062 pts/0 T 1:16 \_ emacs -nw ...
15733 pts/0 R+ 0:00 \_ ps xf
15237 ? S 0:00 uwsgi ...
15293 ? S 0:00 \_ uwsgi ...
15294 ? S 0:00 \_ uwsgi ...
而今天我只需要在脚本中检索 uwsgi 的主进程(所以我只想要 15237 而不是 15293 或 15294)。
截至今天,我尝试了一些ps rf | grep -v ' \\_ '
......但我想要一种更清洁的方式。
我还从 unix.com 的论坛中发现了另一个解决方案:
ps xf | sed '1d' | while read pid tty stat time command ; do [ -n "$(echo $command | egrep '^uwsgi')" ] && echo $pid ; done
但仍然有很多管道和丑陋的伎俩。
真的没有ps
选择或更清洁的技巧(可能使用awk)来实现吗?