Alex Rivera | Logout

How to kill all subprocesses of shell?

Asked 2010-04-11T19:34:23.723
82

I'm writing a bash script, which does several things.

In the beginning it starts several monitor scripts, each of them runs some other tools.

At the end of my main script, I would like to kill all things that were spawned from my shell.

So, it might looks like this:

#!/bin/bash

some_monitor1.sh &
some_monitor2.sh &
some_monitor3.sh &

do_some_work
...

kill_subprocesses

The thing is that most of these monitors spawn their own subprocesses, so doing (for example): killall some_monitor1.sh will not always help.

Any other way to handle this situation?

Edit
Report

1 Answer

146
pkill -P $$

will fit (just kills its own descendants)

And here is the help of -P

   -P, --parent ppid,...
          Only match processes whose parent process ID is listed.

and $$ is the process id of the script itself

answered 2013-07-12T12:42:02.367

Your Answer