Os dois comandos a seguir (alinhados para realçar alterações sintáticas), que diferem apenas nos meios pelos quais os comandos são entregues ao shell, funcionam bem em receptores executando uma variedade de sistemas operacionais baseados em linux (debian, centos, opensuse, etc):
$ ssh u@h "nohup bash -c 'echo testing' -- >/path/out 2>/path/err &"
$ echo 'echo testing' \
| ssh u@h "nohup bash -s -- >/path/out 2>/path/err &"
Sem motivo aparente, o segundo (usando bash -s
) falha quando o nó receptor ( h
) está executando o OS X (10.9.5): os arquivos para os fluxos redirecionados são criados, mas nada é gravado em %código%. Se o comando não for bifurcado para o segundo plano, a sintaxe stdout
funcionará em um receptor OS X:
$ echo 'echo testing' \
| ssh u@h "nohup bash -s -- >/path/out 2>/path/err"
Por causa do comportamento inconsistente, não posso dizer se o problema deriva do bash -s
no mac ou do comportamento de nohup
ou da interação entre os dois; Eu não vejo nenhum processo de suspensão na extremidade receptora; a tarefa enviada por bash -s
parece simplesmente desaparecer depois que a sessão ssh
é desconectada. ssh
ing o trabalho também não ajuda. A versão de disown
no sistema do OS X receptor é bash
. Os sistemas linux de recebimento, nos quais todos os comandos GNU bash, version 3.2.53(1)-release (x86_64-apple-darwin13)
/ nohup
trabalham, estão usando várias versões de ssh
4 (4.2 +).
Isso pode ser corrigido alterando a configuração do bash
? do receptor?