No Linux, posso manter um programa em execução mesmo depois de desconectar?

4

Se eu estiver conectado a uma máquina Linux remota, sei que posso suspender um processo (cntr-z) e movê-lo para o segundo plano (bg 1), mas se eu desligar da máquina, o processo será interrompido.

Existe alguma maneira de deixar em segundo plano e tê-lo lá quando eu fizer login novamente? Este é um processo muito demorado.

No Ubuntu, logado via SSH.

    
por Erik 27.06.2010 / 18:22

2 respostas

9

Isto porque o seu programa precisa de um terminal para rodar, você pode usar o GNU Screen para criar um terminal virtual para que o programa continuará a ser executado mesmo depois da desconexão.
basta executar screen your_program_name , você pode fechar a tela com crtl-a-d e reabri-lo mais tarde com screen -rx

    
por 27.06.2010 / 18:27
6

Menos flexível que a tela são nohup e disown .

nohup é um programa, e você tem que iniciar o jub de longa duração com ele assim:

$ nohup longjob --options-for-longjob

isso fará com que seu longo trabalho seja executado em segundo plano e não seja anexado a nenhum terminal (o que significa que você não obterá nenhuma saída dele na tela e não conseguirá entrada direta para ele do teclado)

disown é um software básico que pode desconectar um trabalho de execução longa após que você o iniciou. Minha página do homem bash diz

disown [-ar] [-h] [jobspec ...]
Without options, each jobspec is removed from the table of active jobs. If the -h option is given, each jobspec is not removed from the table, but is marked so that SIGHUP is not sent to the job if the shell receives a SIGHUP. If no jobspec is present, and neither the -a nor the -r option is supplied, the current job is used. If no jobspec is supplied, the -a option means to remove or mark all jobs; the -r option without a job- spec argument restricts operation to running jobs. The return value is 0 unless a jobspec does not specify a valid job.

    
por 27.06.2010 / 19:25

Tags