Mate uma sessão de tela quando o script é executado

0

Eu tenho um script que demora um pouco para ser executado e estou usando a tela para executá-lo.

ssh user@host screen -dm "python dostuff.py"

Agora a pergunta é: como posso ter certeza de que ele mata a sessão de tela depois que o dostuff.py termina a execução? Se é porque um erro ou rescisão adequada.

    
por Shelby. S 01.03.2016 / 18:30

1 resposta

1

Isto pode estar na categoria "workaround", mas eu consegui atingir o que eu acho que seu objetivo é colocar o comando ("python dostuff.py" do seu exemplo) em um script de shell, então executando ... screen -d -m "/path/to/that/script"

Informação da versão:

$ screen -v
Screen version 3.09.10 (FAU) 4-Sep-01

Parece que eu tenho uma versão bastante antiga da tela neste sistema! Talvez o comportamento da tela tenha mudado em versões mais recentes para sair automaticamente?

$ screen -ls
No Sockets found in /tmp/uscreens/S-username.
$ screen -dm "ls"
$ screen -ls
There is a screen on:
        32112694.ls     (Detached)
1 Socket in /tmp/uscreens/S-username.

(tela -r; saída)

$ screen -ls
No Sockets found in /tmp/uscreens/S-username.

$ cat runme
#!/bin/sh
sleep 6
ls > now

$ screen -d -m ./runme
$ ps -ef|grep sleep
 username 9633926  9437204   0 14:55:23  pts/1  0:00 grep sleep
 username 15532242 10223670   0 14:55:21  pts/6  0:00 sleep 6

(aguarde 6 segundos)

$ screen -ls
No Sockets found in /tmp/uscreens/S-username.
$ ls now
now

Uma coisa que percebi ao passar por isso foi que minha versão da tela parecia esperar um nome de sessão após -dm ; Eu tive que separar -d e -m para passar um argumento de comando.

Tente usar:

ssh user@host screen -d -m python dostuff.py

com um -S opcional para nomear a sessão como algo específico.

    
por 01.03.2016 / 21:03

Tags