Como executar alguns comandos enquanto a tarefa em segundo plano do script bash está prestes a ser eliminada

1

Caso eu execute um script no terminal e contenha um job em segundo plano, caso o usuário feche o terminal, como eu acho que o script com todas as suas tarefas de back ground estará morto, quero algo como um evento quando o job está prestes a ser morto ou encerrado, para executar algum bloco de código por exemplo:

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

eu quero quando eu já pressionei sair no terminal que executar o script em segundo plano e quando este trabalho está prestes a existir e morto para fazer alguns outros comandos antes de terminar o script inteiro algo como EVENTOS em C #, por exemplo, quando algo acontecer um bloco de código é executado Espero ter me explicado muito bem desta vez

Obrigado antecipadamente :)

    
por Ahmed Zain El Dein 02.05.2013 / 14:25

3 respostas

1

O script a seguir será anexado ao arquivo Test.Out, sempre que receber SIGINT, SIGTERM, SIGHUP

#!/bin/bash

trap "echo 'Caught' >> Test.Out" SIGINT SIGTERM SIGHUP
while :
do
   sleep 1000
done

Eu gosto mais de SIGHUP . Ele será enviado para o script de shell sempre que o terminal for fechado.

Mas não podemos escapar do sinal KILL. :( link

EDIT: Mais informações sobre o SIGHUP: link

EDIT: Vídeo com geração de arquivos Test.Out link

    
por thefourtheye 02.05.2013 / 14:56
1

Caso você não queira executar algum código antes de ser executado, você pode usar trap :

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

Mais informações aqui .

    
por OrangeTux 02.05.2013 / 14:44
1

Você pode querer o at command :

at 3 hours <<END
backGround job commands 
END
    
por glenn jackman 02.05.2013 / 15:50