1
私は、バックグラウンドで起動する別のスクリプトを実行するscriptAを持っています。今私はscriptA(cmd + c)を殺すとバックグラウンドプロセスも殺されることを確認する必要があります。スクリプトが存在するときにバックグラウンドプロセスを強制終了する
#!/bin/bash
echo "This script is about to run another script."
sh ../processes/processb/bin/startserver.sh &
FOO_PID=$!
echo "This script has just run another script." $FOO_PID
このスクリプトはうまく実行されますが、私はCMD + Cを押し、FOO_PID値に「psの」コマンドを実行すると、そのプロセスはまだ存在しています。私は間違って何をしていますか?
UPDATE -----------
だから私は、コードの下に試してみたが、それでもscriptCのプロセスが殺されていません。私はちょうどCtrlキー+ cを押すとscriptA(親)を終了すると思いますので、トラップコマンドが実行されないのですか?
#!/bin/bash
echo "This script is about to run another script."
../common/samples/bin/scriptC.sh &
mypid=$!
kill -0 "$mypid" && echo "My process is still alive."
echo "This script has just run another script." $mypid
trap "kill $mypid && kill $$" INT
をおかげでheemayl、好奇心から、とにかくそれいけません私はここで 'nohup'を使用していないので、殺されますか? – user2894296
@ user2894296これは長い話です。一言で言えば、バックグラウンドプロセスは、自身のプロセスグループ内で実行されています。PIDはPGIDです。 – heemayl