Estou ssh
entrando em um servidor e iniciando um script Python que levará aprox. 24 horas para concluir. E se a minha conexão à Internet morrer no meio? Isso vai parar o comando?
Existe alguma maneira de executar meu comando de longa duração de uma maneira que as desconexões locais não o afetem e eu possa continuar vendo sua saída depois de fazer login ssh
novamente?
screen -r
você será reconectado.Você também pode usar
disown
se você já iniciou o processo semscreen
ounohup
fonte
As respostas existentes podem funcionar bem, mas eu precisava de algo para o BusyBox (um shell e um conjunto de ferramentas para hardware mínimo, como roteadores domésticos). Meu sistema não tem
screen
,dtach
,at
,disown
, ou até mesmonohup
! Então, graças ao tbc0 no SO ( link ), encontrei esta jóia. Ele retorna imediatamente, mas o processo do servidor continua em execução:Ou, se vários comandos forem necessários:
Explicação:
>&-
- feche o identificador stdout2>&-
- fechar stderr<&-
- fechar stdin&
- colocar o processo em segundo planoIsso não usa programas externos e deve funcionar com ksh, ash, Bourne shell, bash etc.
fonte
Se você criar um plano de fundo para um processo e encerrar sua sessão, o processo será adotado pelo init (PID 1).
Se eu tiver uma sessão e fizer:
e abra outra sessão e execute:
Meu processo ainda está em execução e vemos que o processo pai agora é 1 (init).
Como alternativa, você pode configurar seu script como faria com um daemon. Uma pesquisa rápida mostra esse link aparentemente útil: http://onlamp.com/python/pythoncook2/solution.csp?day=1 . Se você quiser adotar essa abordagem.
fonte