/bin/sh -version
GNU sh, version 1.14.7(1)
exitfn() {
# Resore signal handling for SIGINT
echo "exiting with trap" >> /tmp/logfile
rm -f /var/run/lockfile.pid # Growl at user,
exit # then exit script.
}
trap 'exitfn; exit' SIGINT SIGQUIT SIGTERM SIGKILL SIGHUP
Вышеупомянутая функция - это сценарий оболочки.проблема завершения процесса сценария оболочки
Я хочу назвать его в некоторых специальных условиях ... как когда:
- «убить -9» пожары на PID этого сценария
- «Ctrl + Z» нажмите в то время как он работает на -x режиме
- сервер перезагружается в то время как сценарий выполняется ..
Короче говоря, с любым типом прерывания в сценарии, должны делать какие-то действия например. rm -f /var/run/lockfile.pid
, но моя функция выше не работает должным образом; он работает только для закрытия терминала или «ctrl + c»
Не предлагайте обновить версию «bash/sh».
Вы не можете захватить сигнал 9. – tripleee
Что означает «работает на -x режиме»? Возможно, вы хотите, чтобы ловушка срабатывала только тогда, когда флаги оболочки включали '-x'? Это можно сделать внутри ловушки с 'case $ - in * x *) echo Shell имеет -x ;; esac' – tripleee
Когда происходит контролируемая перезагрузка, 'init' отправляет регулярный сигнал« HUP », который может быть захвачен обычными средствами. Очевидно, нет возможности обнаружить неконтролируемую перезагрузку. – tripleee