Mantendo o programa em execução após logout

Publicado por D. M. Tavares em 02/04/2008

[ Hits: 13.077 ]

 


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
  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.

Outras dicas deste autor

Til (~) no modo console do Slackware

Exibindo o conteúdo ao contrário

Imprimindo "man pages"

Variáveis de internacionalização no Slackware

Cronometrando o tempo de execução

Leitura recomendada

Colocar arquivos mostrados por um comando em um pacote .tar no Linux

Criando Atalhos para Diretórios Ocultos no Linux

Auto-completar (TAB) no Ubuntu

Tocando CDs de áudio via cdda2wav

convert - Como unir duas imagens em uma e converter o formato usando comandos

  

Comentários
[1] Comentário enviado por chmod000 em 02/04/2008 - 11:34h

Uma alternativa ao nohup seria o comando disown.
(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.

[2] Comentário enviado por korvoman em 02/04/2008 - 12:06h

outra ferramenta de funcionalidade similar é o screen.
(http://polishlinux.org/howtos/screen-tips-tricks/)

O screen gerencia multiplas sessões e pode-se retorna as mesmas, mesmo após ao logout.

Para criar um sessão nomeada apt :

screen -S apt -md apt-get -y dist-upgrade &

listar as sessoes ativas:

screen -list

e retorna a sessao :

screen -r apt



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts