Execute um comando nohup sobre SSH e, em seguida, desconecte

36

Eu quero executar um script, start.sh em um servidor remoto que executa isso:

nohup node server.js &

Ingenuamente, eu chamo o SSH assim:

ssh myserver <<EOF
./start.sh &
EOF

Isso inicia o script, mas deixa a sessão conectada. Eu quero seguir este passo com outros comandos em um script, então isso não é bom.

Como posso usar o SSH para a máquina remota, iniciar um comando nohup no plano de fundo e desconectar? Eu suponho que eu poderia colocar o processo SSH em segundo plano, mas isso não parece certo.

    
por Steve Bennett 24.09.2013 / 00:53

3 respostas

33

Você já encontrou o caminho certo, aqui documento.

  

NOTA : você pode colocar o ssh (cliente) em segundo plano colocando um & amp; no final, mas você não verá a saída. Se você realmente quiser fazer isso, redirecione o arquivo stdout / stderr para um arquivo, caso precise verificar a resposta do host remoto.

Basicamente, você pode fazer isso de qualquer maneira:

Execute diretamente o comando {, s}

ssh [email protected] "nohup command1 > /dev/null 2>&1 &; nohup command2; command3"

OR

ssh [email protected] "$(nohup command1 > /dev/null 2>&1 &) && nohup command2 >> /path/to/log 2>&1 &"

  

NOTA : && requer que o primeiro comando retorne 0 antes de executar o segundo

Use o documento aqui

ssh [email protected] << EOF
nohup command1 > /dev/null 2>&1 &
nohup command2 >> /path/to/command2.log 2>&1 &
......
EOF

As três opções acima devem funcionar para você.

Além disso, dê uma olhada na resposta aqui: link

    
por Terry Wang 24.09.2013 / 01:23
3

Por que não apenas tmux ou screen e pronto? Por exemplo:

$ tmux new -s SessionNameHere
$ nohup /path/to/your/script.sh

Isto é prático se for algo que irá continuamente repetir ou demorar um pouco para terminar. Você pode desconectar da sessão e ela permanecerá ativa.

    
O
por Anon 13.11.2014 / 21:02
2

Forma mais curta:

ssh host "(command 1; command 2; ...) &>/dev/null &"

Parece que o próprio bash executa a desanexação do terminal, portanto não é necessário nenhum nohup. Eu corro o Ubuntu 14.04 x86_64, bash 4.3.11.

    
por Alek_A 27.02.2016 / 11:40