Напишите скрипт, который делает это:
#!/bin/bash
trap 'echo hup' hup
trap 'echo int' int
trap 'echo quit' quit
trap 'echo abrt' abrt
trap 'echo kill' kill
trap 'echo usr1' usr1
trap 'echo usr2' usr2
trap 'echo term' term
trap 'echo chld' chld
trap 'echo cont' cont
trap 'echo stop' stop
trap 'echo tstp' tstp
trap 'echo ttin' ttin
trap 'echo ttou' ttou
shopt huponexit
sleep 10
echo $(date) process $$ done
Напишите второй скрипт, который выполняет : > nohup.out; nohup firstscript& echo sleeping; sleep 10
. Запустите второй скрипт, подождите секунду или две, затем закройте терминал PuTTY. Откройте новый терминал PuTTY и проверьте файл nohup.out. Он должен сказать вам, какой сигнал получил первый скрипт, который заставил его остановиться. Это поможет вам понять, как поступить. Вы можете попробовать сделать trap '' THEGUILTYSIGNAL
для одной вещи.
Это также должно сказать вам значение huponexit. Если это включено , вы можете поэкспериментировать с shopt -u huponexit
и посмотреть, улучшится ли это. (Улучшение = вы можете запустить второй скрипт, затем закрыть свой терминал PuTTY, но первый скрипт все еще выполняется до конца.)