Как выполнить некоторые команды, в то время как фоновая задача сценария удара собирается быть уничтоженной

В случае, если я запускаю скрипт в терминале, и он содержит фоновое задание, в случае, если пользователь закрывает терминал, поскольку я предполагаю, что сценарий с его всеми задними наземными задачами будет мертв, я хочу что-то как событие, когда задание собирается быть уничтоженным или завершенным, выполнить некоторый блок кода, например:

while sleep 3h
do
backGround job commands 
done
those above is the back ground job 

я хочу, когда я уже нажал выход на терминале, кто запускает скрипт в фоне и когда это задание собирается существовать и уничтоженный, чтобы сделать, некоторые другие команды прежде завершаются целый сценарий что-то как СОБЫТИЯ в C#, например, когда что-то происходит, блок кода выполняется, я надеюсь, что объяснился сильно ясный на этот раз

Заранее спасибо :)

1
задан 2 May 2013 в 17:18

3 ответа

Следующий скрипт будет добавлять 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

0
ответ дан 2 May 2013 в 17:18

Если вы не хотите выполнять какой-либо код перед выполнением, вы можете использовать trap:

 #!/bin/bash
 trap "echo Exiting" SIGINT SIGTERM
 read        

Подробнее здесь .

0
ответ дан 2 May 2013 в 17:18

Возможно, вы захотите команду at :

at 3 hours <<END
backGround job commands 
END
0
ответ дан 2 May 2013 в 17:18

Другие вопросы по тегам:

Похожие вопросы: