Já lhe dissemos o que é um processo em segundo plano no Linux e como iniciá-lo corretamente. Neste artigo, vamos dizer-lhe como funciona neste modo.
Executar um script em Linux é uma tarefa, precisa de se certificar que funciona corretamente logo após fechar o terminal. O terminal é fechado da seguinte forma: é necessário clicar na cruz que se encontra no canto superior do ecrã, o que leva ao encerramento de todos os processos em segundo plano. Existem vários métodos para os guardar no caso de se perder a ligação com a shell interactiva
Primeiro: remover a fila de tarefas da tarefa utilizando disown
:
disown
Tal como nos casos anteriores, se existirem vários processos concorrentes em execução, deve especificar o número daquele em relação ao qual a ação será executada:
disown %1
Certifique-se de que a tarefa não está na lista de tarefas. Como fazer isso. Use o utilitário jobs -l
. Para ver a lista completa dos processos em execução, utiliza-se o comando:
ps aux
Próximo método: salva-se os processos em execução com o comando nohup
. Este comando, após a execução, executará por sua vez outro comando, todos os sinais SIGHUP
serão ignorados.
Pode executar o comando em segundo plano desta forma:
nohup command &
Como pode ver na imagem acima, a saída do comando será enviada para nohup.out
. O mais importante é que, depois de terminar a sessão e fechar o terminal, o processo continuará a funcionar. Existem alguns utilitários que permitem executar duas ou mais sessões ao mesmo tempo. Em particular, o Screen
e o Tmux
permitem-lhe fazer isto.
O Screen
ou GNU Screen
é um multiplexador de terminais que permite iniciar uma sessão de trabalho e abrir qualquer número de janelas (terminais virtuais) dentro dela. Os processos em execução neste programa serão executados mesmo que as suas janelas estejam invisíveis ou que o programa tenha parado de funcionar.O Tmux
é uma alternativa mais moderna ao GNU Screen
. No entanto, as caraterísticas do Tmux
não são fundamentalmente diferentes - pode abrir muitas janelas numa única sessão da mesma forma. As tarefas em execução no Tmux
continuam a ser executadas se o terminal for fechado.Resolvemos este problema e, como pode ver, tudo é elementar e simples.