Matando o processo em segundo plano no script bash ao sair do script

4

Eu tenho um script que tail um arquivo ao exibir um relógio no canto superior direito . Eu peguei a parte do relógio da internet, e funciona bem. O script inteiro é algo como (eu simplifiquei):

while sleep 1; do tput sc; tput cup 0 $(($(tput cols)-29)); date; tput rc; done &
tail -f mylog.log

Tudo funciona bem, mas o problema é que quando eu paro o script usando CTRL+C o relógio continua rodando no meu console (até que eu manualmente mato o processo bash que sobrou). Então, existe uma maneira de parar esse processo quando eu sair do script?

Eu tentei o código abaixo, mas não funciona:

while sleep 1; do tput sc; tput cup 0 $(($(tput cols)-29)); date; tput rc; done &
CLOCK_PID=$!
tail -f mylog.log
kill -9 $CLOCK_PID

Eu pesquisei como interceptar CTRL+C no bash, mas não tenho certeza se é o caminho certo ...

    
por lorenzo-s 15.05.2014 / 17:27

2 respostas

3
CLOCK_PID=$!
trap 'kill -9 $CLOCK_PID' EXIT
tail -f mylog.log
    
por 15.05.2014 / 17:34
0

Talvez watch atenda às suas necessidades. Imprime a hora atual por padrão. Algo como:

$ watch tail -n 30 /var/log/syslog

    
por 19.05.2014 / 16:02