Examples of how to kill all child jobs when a shell script exits.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kill-child-jobs/pkill-P-full-example.sh

27 lines
465 B

#!/bin/sh
set -e
kill_child_jobs() {
echo "In kill_child_jobs()..."
# From https://stackoverflow.com/a/23336595
# Kills all child processes, not just jobs.
pkill -P $$
}
cleanup() {
kill_child_jobs
}
# From https://unix.stackexchange.com/a/240736
for sig in INT QUIT HUP TERM; do
trap "
cleanup
trap - $sig EXIT
kill -s $sig "'"$$"' "$sig"
done
trap cleanup EXIT
yes aa &
yes disowned & builtin disown || true
sleep 100 &
wait