ssh - fecha a conexão mas continua executando remotamente

0

digamos que eu tenha um really-long-running.sh ("muito longo" como em "horas").

Eu gostaria de ter uma máquina remota para executá-la (e depois desligar a máquina local).

Infelizmente, não tenho muita experiência com o ssh. Isso faz o que eu quero ou apenas mascara a conexão?

ssh user@host "bash -s " < really-long-running.sh &

UPDATE

Isso não acontece.

Como então posso fazer isso?

    
por User1291 12.10.2016 / 16:14

4 respostas

2

Existe também a ferramenta nohup . De man nohup :

nohup - run a command immune to hangups, with output to a non-tty

Você pode trabalhar passo a passo:

  • ssh para o host remoto
  • nohup /path/to/really-long-running.sh > /path/to/where-to-store-the-output &
  • pode desconectar agora;

ou de uma vez da sua máquina local:

ssh remote-host 'nohup /path/to/really-long-running.sh > /path/to/where-to-store-the-output &'

Esses exemplos exigem que o script seja executável e resida no host remoto. Em seu código, o script pode não ser executável e é um arquivo local.

    
por 12.10.2016 / 19:42
1

Eu recomendo que você use screen ou tmux no lado de execução - isso permite que você desconecte e reconecte à vontade, oferecendo a opção de ler a saída do seu script em um momento posterior.

    
por 12.10.2016 / 16:26
1

Isso 'pode' fazer o que você quer (ssh novamente depois e verifique com o topo?)

No entanto, as maneiras ideais de fazer isso são iniciar o comando em uma sessão de tela (ou tmux) que, em seguida, permite que você se desconecte dessa sessão em execução, enquanto ainda visualiza o que está fazendo

Ou você pode ssh in, então 'desconectar' o processo do terminal atual colocando em segundo plano e depois desconectando-o usando

ctrl + z
bg
disown

Ou você pode contextualizar o processo a partir da linha de comando, adicionando & ao seu comando. Você ainda precisará rejeitá-lo para que ele pare de morrer quando você se desconectar.

    
por 12.10.2016 / 16:30
1

Você pode usar at na máquina remota para agendar seu trabalho.

$ ssh remote-host
$ at now + 5 min
at> really-long-running.sh
at> <Ctrl-D>
job 1 at 2016-10-12 09:10
$ exit

Seu trabalho será executado de acordo com a programação definida para o trabalho. Verifique a manpage para em para mais detalhes. A configuração padrão permite que qualquer usuário use em.

    
por 12.10.2016 / 18:08