В случае, если я запускаю скрипт в терминале, и он содержит фоновое задание, в случае, если пользователь закрывает терминал, поскольку я предполагаю, что сценарий с его всеми задними наземными задачами будет мертв, я хочу что-то как событие, когда задание собирается быть уничтоженным или завершенным, выполнить некоторый блок кода, например:
while sleep 3h
do
backGround job commands
done
those above is the back ground job
я хочу, когда я уже нажал выход на терминале, кто запускает скрипт в фоне и когда это задание собирается существовать и уничтоженный, чтобы сделать, некоторые другие команды прежде завершаются целый сценарий что-то как СОБЫТИЯ в C#, например, когда что-то происходит, блок кода выполняется, я надеюсь, что объяснился сильно ясный на этот раз
Заранее спасибо :)
Следующий скрипт будет добавлять Caught к файлу Test.Out всякий раз, когда он получает SIGINT, SIGTERM, SIGHUP
#!/bin/bash
trap "echo 'Caught' >> Test.Out" SIGINT SIGTERM SIGHUP
while :
do
sleep 1000
done
Мне больше нравится SIGHUP . Он будет отправлен сценарию оболочки всякий раз, когда терминал закрыт.
Но мы не можем избежать сигнала УБИТЬ. :( http://en.wikipedia.org/wiki/SIGKILL#SIGKILL
РЕДАКТИРОВАТЬ: Подробнее о SIGHUP: http: // www .gnu.org / software / libc / manual / html_node / Termination-Signals.html # index-hangup-signal-2859
РЕДАКТИРОВАТЬ: Видео с генерацией файла Test.Out http://www.youtube.com/watch?v=qP0zClZZZHc
Если вы не хотите выполнять какой-либо код перед выполнением, вы можете использовать trap
:
#!/bin/bash
trap "echo Exiting" SIGINT SIGTERM
read
Подробнее здесь .
Возможно, вы захотите команду at
:
at 3 hours <<END
backGround job commands
END