Nohup sobre ssh não retornará


11

Estou tentando fazer

[me@myPc]$ ssh me@server "nohup myBashScript.sh &"

Meu objetivo é iniciar o processo no servidor e retornar imediatamente.

Ele não está funcionando: o trabalho foi iniciado no servidor, mas ainda recebo a saída no myPc e no bash aguarde a conclusão antes de solicitar outro comando.

Por quê ? Não deveria! Alguma maneira de evitar isso?

  • myPc é RHEL6.2
  • servidor é ubuntu 10.04e
  • ambas as corridas openssh

Respostas:


12

Enquanto a entrada ou saída ainda estiver aberta, o ssh manterá a conexão aberta. Para resolver isso, verifique se a entrada e a saída não estão abertas.

Por exemplo, use ssh -ne redirecione sua saída:

ssh -n me@example.com "nohup myscript.sh >/dev/null 2>&1 &"

E se eu ainda quiser myscript.shme fornecer uma saída, mas a sessão ssh ainda terminar após o script ser concluído? No meu caso, o próprio script inicia o processo nohup e depois retorna. Fiquei com a impressão de que ssh -Tme ajudaria a fazer isso.
Gauthier

@ Gauthier Em seguida, basta executar o script sem nohup.
Michael Hampton

Eu faço. O script inicia outros comandos com nohup e &, depois termina. Mas ssh não retorna. Os comandos chamados no script redirecionam o stdout para os arquivos. Ah, mas não stderr e stdin, poderia ser por quê?
Gauthier

Aí está! A entrada e a saída devem ser redirecionadas.
22419 Michael Michael Hampton

O que eu não entendo é que, se eu realmente entrar e obter um tty, iniciar o script que inicia os comandos nohup &, então eu tenho permissão para sair da sessão ssh. Não se queixa de que existem entradas e saídas abertas. Não é isso que ssh -tdeveria imitar?
Gauthier
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.