How to get process ID of background process? How to get process ID of background process? linux linux

How to get process ID of background process?


You need to save the PID of the background process at the time you start it:

foo &FOO_PID=$!# do other stuffkill $FOO_PID

You cannot use job control, since that is an interactive feature and tied to a controlling terminal. A script will not necessarily have a terminal attached at all so job control will not necessarily be available.


You can use the jobs -l command to get to a particular jobL

^Z[1]+  Stopped                 guardmy_mac:workspace r$ jobs -l[1]+ 46841 Suspended: 18           guard

In this case, 46841 is the PID.

From help jobs:

-l Report the process group ID and working directory of the jobs.

jobs -p is another option which shows just the PIDs.


  • $$ is the current script's pid
  • $! is the pid of the last background process

Here's a sample transcript from a bash session (%1 refers to the ordinal number of background process as seen from jobs):

$ echo $$3748$ sleep 100 &[1] 192$ echo $!192$ kill %1[1]+  Terminated              sleep 100