Como posso iniciar um processo remoto em uma máquina remota via ssh? [duplicado]

1

Eu quero iniciar um script de shell que reside em uma máquina remota. Quando eu uso

ssh [email protected] /path/to/script.sh

ele precisa que a conexão ssh esteja aberta até que o script seja encerrado.

Mas eu preciso que o script continue a rodar, mesmo depois de fechar a conexão ssh até que o script termine sozinho. Eu só quero começar um processo e depois esquecer isso.

Como posso fazer isso usando o ssh?

Muito obrigado!

PS: Esta não é uma duplicata de esta pergunta sobre mudança de pilha .

    
por Gary Czychi 17.02.2017 / 21:18

1 resposta

3

Eu acredito que o problema é que quando a sessão SSH é fechada (ao pressionar ctrl-c, ou ao fechar o xterm), um HUP é enviado para o processo. Para bifurcar o processo em segundo plano, adicione & e, para bloquear o hup, use nohup :

ssh [email protected] 'nohup sleep 300 >/dev/null 2>/dev/null </dev/null &'

O ssh deve iniciar e o processo será executado em example.com em segundo plano.

Se você deseja monitorar seu progresso, você pode usar screen , se você deseja fazer isso, algo semelhante a isso ajudará:

ssh [email protected] -t 'screen -D -RR -S this /bin/sleep 300'

Isso cria uma sessão de tela chamada 'this' (-S), desanexa uma tela já em execução se estiver anexada em outro lugar e reconecta aqui. Então começa / bin / sleep com uma espera de 5min.

    
por 17.02.2017 / 21:56