sai do ssh e ainda tem um comando em execução? [duplicado]

0

Estou executando um comando em um servidor. Ele contém esta biblioteca link .

Basicamente, eu tenho um loop for que faz procissão de imagens em muitos arquivos.

O comando é executado por horas e será executado por horas. Eu estou querendo saber, posso sair do ssh e ainda ter esses comandos em execução na máquina remota? A saída do ssh envia algum sinal para terminar a execução do comando atual?

A outra coisa que eu notei .. Embora eu esteja executando o comando remotamente, meu laptop está superaquecendo. Monitor de atividade mostra bash está usando 70% de cpu. Eu estou no macbook pro

Agora isso é estranho. Como o comando remoto pode causar tensão na máquina local?

    
por sanjihan 25.05.2017 / 14:24

2 respostas

3

Quando um líder de sessão com terminal de controle associado ( bash , no seu caso) sai, o sistema operacional envia SIGHUP para todos os processos no grupo de processos de primeiro plano (trabalho de primeiro plano). Além disso, bash envia, por padrão, o SIGHUP para todos os seus trabalhos, em execução ou parado (os trabalhos interrompidos também são enviados SIGCONT). Agora, a ação padrão ao receber SIGHUP é o término do processo.

Existem várias abordagens para deixar o processo em execução após bash sair. Primeiro, você pode tornar seu processo imune ao SIGHUP; isto é o que o comando nohup faz. Segundo, você pode colocar em segundo plano o grupo de processos correspondente e instruir bash a não enviar SIGHUP para ele; é para isso que o disown shell builtin é usado (note também que existe uma opção huponexit shell, que faz com que SIGHUP seja enviado para todos os jobs quando um shell de login interativo sai).

Se você deseja reconectar um terminal ao grupo de processos depois de fazer o login novamente, você pode querer usar um wrapper capaz disso; multiplexadores de terminal como screen têm essa funcionalidade.

    
por 25.05.2017 / 15:22
2

Uma solução é prefixar o comando com nohup . Isso diz ao computador para ignorar os sinais de 'desconexão' (como sair de uma sessão ssh). Isso pode não funcionar com for loops.

Outra boa solução (e minha maneira favorita de fazer isso) é instalar o pacote 'screen'. screen fornece um terminal virtual que pode ser desconectado, deixando os processos em execução pressionando CTRL + A , D . A tela pode ser reconectada posteriormente com screen -r .

    
por 25.05.2017 / 15:18

Tags