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

13

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 &'

O ssh trava no meu terminal até que o sono termine, mesmo que o sono seja executado em segundo plano.

    
por Richard Hoskins 19.07.2009 / 19:54

3 respostas

17

O SSH tem um switch -f que faz exatamente o mesmo que usar o nohup no seu cliente, mas torna possível que o ssh solicite uma senha. Use assim:

ssh localhost -f 'command'

Mas : o SSH ainda estará em segundo plano, portanto, se você encerrar o cliente antes do fim do comando no servidor, ele será interrompido. Se você quiser 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'
    
por 19.07.2009 / 20:14
6

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

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

EDIT: Ou melhor ainda, apenas use o parâmetro -f do ssh:

ssh -f localhost 'sleep 60'
    
por 19.07.2009 / 20:04
2

Ou após o login em usar ssh , inicie screen se você quiser voltar mais tarde, para ver o progresso ou a saída.

    
por 19.07.2009 / 20:12

Tags