Mantendo o programa em execução após logout
Dica publicada em Linux / Comandos
Mantendo o programa em execução após logout
Uso os computadores do laboratório de informática (computadores com GNU/Linux) e às vezes tenho de executar alguns programas (trabalhos de algumas disciplinas) que necessitam de muito tempo de execução. Gostaria de saber se é possível executar esses programas sem manter o gerenciador de janelas travado (descanso de tela com senha), ou seja, gostaria de manter esses programas em execução após logout?
Resposta:
Existe uma maneira bem simples de manter um programa em execução após logout. Isso pode ser feito com o comando nohup.
O comando nohup executará o programa passado como parâmetro, informando ao mesmo para ignorar o sinal de hangup. Exemplo de uso:
$ nohup ./caixeiro_viajante &
Prontinho, agora você poderá sair do sistema (logout) tranqüilamente, tendo a certeza que seu programa continuará em execução.
OBS.: Caso o programa a ser deixado em execução necessite de bastante recursos do sistema e não tenha tanta urgência, para não comprometer o trabalho de outros usuários (em termos de desempenho), você poderá baixar a prioridade do mesmo aumentado seu "custo de execução". Isso pode ser feito com o comando renice. O "custo" varia de -20 a 19 para o root e de 0 a 19 para os demais usuários. Lembre-se que quanto maior o número "custo" menor a prioridade do processo.
Assim, para diminuir a prioridade do processo, obtenha o PID do mesmo usando (por exemplo) o comando ps:
$ ps
Depois, baixe a prioridade do processo em questão com o comando renice:
$ renice 14 4497
4497: prioridade antiga = 0; prioridade nova = 14
Abraços,
Prof. D.M.T.
Resposta:
Existe uma maneira bem simples de manter um programa em execução após logout. Isso pode ser feito com o comando nohup.
O comando nohup executará o programa passado como parâmetro, informando ao mesmo para ignorar o sinal de hangup. Exemplo de uso:
$ nohup ./caixeiro_viajante &
Prontinho, agora você poderá sair do sistema (logout) tranqüilamente, tendo a certeza que seu programa continuará em execução.
OBS.: Caso o programa a ser deixado em execução necessite de bastante recursos do sistema e não tenha tanta urgência, para não comprometer o trabalho de outros usuários (em termos de desempenho), você poderá baixar a prioridade do mesmo aumentado seu "custo de execução". Isso pode ser feito com o comando renice. O "custo" varia de -20 a 19 para o root e de 0 a 19 para os demais usuários. Lembre-se que quanto maior o número "custo" menor a prioridade do processo.
Assim, para diminuir a prioridade do processo, obtenha o PID do mesmo usando (por exemplo) o comando ps:
$ ps
PID TTY TIME CMD 4201 pts/1 00:00:00 bash 4373 pts/1 00:00:00 xterm 4497 pts/1 00:00:00 caixeiro_viajante 4498 pts/1 00:00:00 ps
Depois, baixe a prioridade do processo em questão com o comando renice:
$ renice 14 4497
4497: prioridade antiga = 0; prioridade nova = 14
Abraços,
Prof. D.M.T.
(http://www.vivaolinux.com.br/dicas/verDica.php?codigo=9417)
O comando disown funciona de forma semelhante ao nohup, mas com uma diferença básica;
O nohup é utilizado junto com o comando do programa a ser executado.
O disown deve ser utilzado após o início da tarefa, por exemplo:
$ ./caixeiro_viajante & #depois de algum tempo você percebe que esta
#tarefa vai demorar mais do que você pensava.
# pega o pid do processo
$ pgrep caixeiro_viajante
4497
# desconecta ele do seu shell, jogando para o init (pai de todos)
$ disown -h 4497
Pronto, agora pode fazer logout.