ps: Clean way to only get parent processes?
- by shkschneider
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?