Como saber quando termina um trabalho na tela?

0

É possível saber se um script executado dentro de uma sessão de tela foi concluído ou não? O script pode ser visto digitando jobs e gostaria de finalizar o screen session quando o script estiver concluído. Como posso fazer isso ou posso terminar a tela depois que o script for executado com sucesso? Não é conveniente fazer isso manualmente, já que executo 72 sessões de tela de uma só vez. Seria realmente bom de alguma forma verificar o status dos trabalhos dentro das sessões da tela automaticamente e imprimi-los em stdout e terminar as sessões de screen quando as tarefas em execução estiverem concluídas.

    
por Vesnog 01.09.2014 / 00:07

2 respostas

3

Você apenas encadeia os comandos 1. your_script e 2. kill this screen session

Deixe foo.sh ser seu script. O comando para matar uma sessão de tela é kill . Você emite comandos para uma sessão de tela com screen -X , tornando screen -X kill o comando shell / bash para matar a sessão de tela em que você está atualmente. Você faria

screen -S the_session_for_my_job

para criar a sessão de tela e, em seguida, você faria

/path/to/foo.sh; screen -X kill

Isso matará a sessão de tela, independente do número de janelas, e o fará depois que foo.sh terminar.

Uma maneira mais complicada é observar os ids do processo e emitir o comando kill quando um determinado PID desaparecer.

Deixe 12345 o PID do processo que você deseja assistir. Então você faria

while ps a | grep ^12345;do sleep 2; done; screen -X kill

O loop while observa a lista de processos de um processo com o PID 12345. Se tal processo existir, ele dormirá 2 segundos antes de verificar novamente. Se nenhum processo com este PID existir, o loop while terminará. Então o comando kill é emitido.

    
por 01.09.2014 / 00:42
1

Eu uso e-mail com o seguinte:

command | mail-s job_output [email protected]; exit

Ou, se já estiver em execução, você pode digitar (ou copiar e colar se houver muitos resultados) para executar após a conclusão:

echo $STY done | mail -s job_done [email protected]; exit
    
por 01.09.2014 / 05:01