# kill-child-jobs Examples of how to kill all child jobs when a shell script exits. [`all-full-example.sh`](all-full-example.sh) starts some jobs, disowns one of them, and kills all jobs when it exits. [`pkill-P-full-example.sh`](pkill-P-full-example.sh) does the same except it kills all child processes when it exits. The remaining scripts in the root are variants of the `kill_child_jobs()` function. The [`test/test-all.sh`](test/test-all.sh) script tests them all and generates the following output showing which version of the `kill_child_jobs()` function works in each shell: ``` Legend: ∞=script does not halt (after 1 second timeout) X=disown unsupported by shell ☠=all children killed 🏃=all children still running ✔️=expected result (job killed, disowned child alive) bash sh ash dash zsh ksh all.sh ✔️ X☠ X☠ X☠ ✔️ ☠ bash.sh ✔️ X🏃 ∞X☠ X🏃 ✔️ ☠ dash.sh ✔️ X☠ X☠ X☠ 🏃 ☠ noop.sh 🏃 X🏃 X🏃 X🏃 🏃 🏃 pkill-P.sh ☠ X☠ X☠ X☠ ☠ ☠ zsh.sh ∞✔️ X🏃 ∞X☠ X🏃 ✔️ ☠ ```