Executando um longo processo no servidor Ubuntu [duplicado]

0

Digamos que eu tenha um laptop e um servidor Ubuntu. Há uma tarefa pesada que eu quero realizar no servidor Ubuntu.

Até agora, conectei-me ao servidor por meio do SSH e o executei. No entanto, quando eu preciso desligar o laptop (deixando o escritório), a sessão do SSH é perdida e não tenho idéia do que está acontecendo com o processo.

Existe uma solução que eu posso deixar o processo rodar no servidor Ubuntu, e amanhã de manhã, quando eu ligar meu laptop, eu posso continuar verificando o que está acontecendo com o processo?

    
por mommomonthewind 03.07.2018 / 14:26

3 respostas

2

Use o comando screen no servidor. Você precisa instalar o pacote relacionado se não estiver presente no servidor

sudo apt-get install screen
  1. criar tela

    screen
    
  2. execute o comando que você deseja executar nessa tela

  3. sai da tela pressionando Ctrl + a + d

  4. liste a tela

    # screen -ls 
    
  5. Agora você pode sair da sessão ssh enquanto seu comando está sendo executado na tela

  6. ssh novamente e anexe a tela para verificar o status do comando

    screen -r screen_name
    
por 03.07.2018 / 14:44
2

Inicie seu comando com nohup : nohup {command} {args...} e geralmente reencaminhe a saída para o arquivo: nohup {command} {args...} >{logfile} .

Entre outras coisas, o nohup impede que o seu comando receba o sinal SIGHUP que diz ao seu pai desconectado.

Se você reconectar e quiser verificar a saída, faça tail -f {logfile} .

    
por 03.07.2018 / 14:32
0

Normalmente, executo a tarefa em segundo plano e registro a saída em arquivos, verificando o progresso "seguindo" meus registros:

$> my_long_task.sh > stdout.log 2> stderr.log &

E quando quero verificar o status que eu faço:

$> tail stdout.log
$> tail stderr.log
    
por 03.07.2018 / 16:26

Tags