バックグラウンドでいくつかの実行時間の長いプロセスを生成し、その後ハングアップするシェル スクリプトを作成したいと考えています。SIGTERM を受信したら、すべてのサブプロセスも終了させたいと思います。
基本的には「マスタープロセス」が欲しい。
これが私がこれまでに得たものです:
#!/bin/sh
sleep 600 &
PID1="$!"
sleep 600 &
PID2="$!"
# supposedly this should kill the child processes on SIGTERM.
trap "kill $PID1 $PID2" SIGTERM
wait
上記のスクリプトは で失敗しtrap: 10: SIGTERM: bad trap
ます。
編集:Ubuntu 9.04を使用しています