Como encerrar o aplicativo chamado do script bash?

0

Eu quero chamar algum aplicativo do script. Eu uso um aplicativo que não permite quaisquer parâmetros na CLI, mas eu preciso testá-lo em dois monitores diferentes e resoluções de tela, então eu tenho dois arquivos de configuração diferentes. Para chamar a versão necessária, eu uso um script simples (nomeie-o notebook.sh ):

#!/bin/sh

rm /home/user/.app/config.ini
cp /home/user/.app/config.ini.1366x768 /home/user/.app/config.ini
sleep 1
/usr/local/bin/app &

ou segunda versão com cp linha alterada.

OK, é simples. Mas quando eu saio deste aplicativo (função embutida Ctrl + Q) ele ainda funciona. Chamando o comando ps vejo app e notebook.sh na lista de processos.

Minha pergunta é: como o script notebook.sh deve ser escrito para terminar / kill app e script totalmente? Algo parecido com este pedaço de código:

if [ "$1" = "start" ]; then /usr/bin/mplayer -fs -osdlevel 0 $2 ; fi
if [ "$1" = "stop" ]; then killall mplayer ; fi
    
por stalker 07.10.2013 / 17:51

1 resposta

1

Eu ofereço uma solução mais simples, mas mais feia. :-)
Você pode matar um processo após um período de tempo com um pacote chamado timelimit :

sudo apt-get install timelimit

(em um terminal)

A opção -t de timelimit é o número de segundos que um processo permanecerá ativo: depois disso, ele será eliminado (brutalmente) com o sinal SIGKILL (se você não especificou outros sinais com a opção -S).

timelimit OPTIONS command arguments

Editar: se você quiser usar uma solução "profissional", use trap :

trap 'kill $(jobs -p)' EXIT

Ele executará o comando nas vírgulas depois do sinal "EXIT".
Para testá-lo: trap "yes test" EXIT ... then use the exit command. Bye.

    
por Lorenzo Ancora 07.10.2013 / 19:18