Execução assíncrona remota com SSH

1

Eu tenho um script em um mac mini server que baixa lentamente um arquivo de vários gigabytes. Eu gostaria de lançar este script via SSH de outro servidor (linux) com ssh mac-server 'nohup /path/to/script arguments' , mas imediatamente matar a conexão SSH assim que eu souber que o script foi lançado com sucesso. Uma vez lançada, a conexão SSH não serve a nenhum propósito útil, falha sistematicamente em algum lugar durante os downloads e bloqueia a execução no servidor linux.

Eu não posso fazer apenas ssh -f ou ssh & porque eu preciso do comando para falhar no servidor linux se o script não iniciar (ou se o mac não estiver acessível).

    
por instanceof me 17.07.2013 / 19:42

1 resposta

1

Esta questão foi detalhada e analisada no ServerFault .

Para resumir, foram encontradas 2 soluções:

  1. Use nohup para iniciar a tarefa assíncrona + fechar os descritores de arquivo:

    exec 0>&- # close stdin
    exec 0<&- 
    exec 1>&- # close stdout
    exec 1<&- 
    exec 2>&- # close stderr 
    exec 2<&- 
    
  2. Use screen -d -m para iniciar uma tarefa assíncrona. Ele pode então ser verificado (com screen -ls ) ou reconectado posteriormente.

por 25.07.2013 / 10:32

Tags