it-swarm-pt.tech

Como posso usar o ssh para executar um comando em uma máquina Unix remota e sair antes que o comando seja concluído?

Como posso usar o ssh para executar um comando em uma máquina Unix e sair antes que o comando seja concluído?

Por exemplo, se eu digitar

ssh localhost 'sleep 60 &'

ssh fica pendurado no meu terminal até que o sono seja concluído, embora o sono seja executado em segundo plano.

17
Richard Hoskins

SSH tem um switch -f que faz exatamente o mesmo que usar Nohup em seu cliente, mas torna possível que o ssh peça uma senha. Use assim:

ssh localhost -f 'command'

Mas: SSH ainda viverá em segundo plano, então se você desligar o cliente antes que o comando no servidor termine, ele será abortado. Se você deseja que a conexão ssh seja fechada após a execução do comando, você pode usar a tela no lado do servidor:

ssh localhost -f 'screen -d -m sleep 60'
19
Martin

Use Nohup, redirecionamento stdout/stderr e execute o comando em segundo plano:

 Nohup ssh localhost 'sleep 60' >/dev/null 2>/dev/null &

EDITAR: Ou melhor ainda, basta usar o parâmetro -f do ssh:

ssh -f localhost 'sleep 60'
6
neu242

Ou depois de fazer o login usando ssh, comece screen se quiser voltar mais tarde, para ver o progresso ou a saída.

2
Arjan