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

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

[ Hits: 13.055 ]

 


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

Cronometrando o tempo de execução

Til (~) no modo console do Slackware

Exibindo o conteúdo ao contrário

TAR seletivo

Variáveis de internacionalização no Slackware

Leitura recomendada

Configurando interface de rede eth0

Limpando sua memória cache de forma simples (parte 2)

Tirando permissão até de root

Instalação do eDEX-UI no Linux

Monitorando tarefas com o comando watch

  

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