ps: Clean way to only get parent processes?
Posted
by
shkschneider
on Stack Overflow
See other posts from Stack Overflow
or by shkschneider
Published on 2012-09-11T15:36:53Z
Indexed on
2012/09/11
15:37 UTC
Read the original article
Hit count: 245
I use ps ef
and ps rf
a lot.
Here is a sample output for 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 ...
And today I needed to retrieve only the master process of uwsgi in a script (so I want only 15237 but not 15293 nor 15294).
As of today, I tried some ps rf | grep -v ' \\_ '
... but I would like a cleaner way.
I also came accross another solution from unix.com's forums:
ps xf | sed '1d' | while read pid tty stat time command ; do [ -n "$(echo $command | egrep '^uwsgi')" ] && echo $pid ; done
But still a lot of pipes and ugly tricks.
Is there really no ps
option or cleaner tricks (maybe using awk) to accomplish that?
© Stack Overflow or respective owner