4

I have a script which does ps -o comm= -p $PPID.

The explanation says this gets the parent process name.

From the man page I found out -o means user defined format, comm means command and -p means select the process by the given PID - in this case $PPID, which means parent PID.

  • What does comm= -p $PPID mean?
  • How does this command work?
6
  • -o comm= means user output should be the command name only, but without any column title. E.g. if you do -o comm=COMMAND, it will print you a column title COMMAND:

    $ ps -o comm= -p $PPID
    xterm
    $ ps -o comm=COMMAND -p $PPID
    COMMAND
    xterm
    
  • -p $PPID selects the process by the given parent's PID, the PPID.

That means -o comm= -p $PPID are two independent options.

So your command essentially does give you the name of the parent process by it's PPID.

E.g. if I start tmux, it has the PID of 1632. Now I start several bash in each pane, which each have the PPID of 1632, but have their own PID.

Learn here more abut PID and PPIDs.

I am not sure, but ps might look at /proc/$PPID/comm to determine the parent's command name.

In my case, executing this command gives you the name of the parent's process, without using ps:

$ cat /proc/$PPID/comm
tmux
$ cat /proc/1632/comm
tmux
|improve this answer|||||
  • done on the output of just "ps" ? – user881300 Jul 21 '14 at 20:51
  • @user881300 What do you mean? I don't quite understand that question. – polym Jul 21 '14 at 20:55
  • I just meant the formatting is done on top of the output of original ps ? – user881300 Jul 21 '14 at 20:58
  • Yeah, I guess internally ps just has a switch case that prints out given columns, if the -o option is given, and a header for each column that has a string following the =. – polym Jul 21 '14 at 21:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for?Browse other questions tagged or ask your own question.