У меня есть 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
Этот скрипт выполняет хорошо, но когда я нажимаю Ctrl + C и сделать команду «пс» на значение FOO_PID, этот процесс до сих пор существует. Что я делаю не так?
UPDATE -----------
Так что я попытался ниже код, но все-таки процесс scriptC является не быть убитым. Я думаю, что это просто прекращает scriptA (родительский) при нажатии ctrl + c, и поэтому команда trap не выполняется?
#!/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