Processos que correm após o fim da sessão que os iniciou

unix_hero20071016.png No post Brincadeira de Natal… em Macs Expostos disse que para colocar a tarefa que vai “falar” com o utilizador a funcionar em background se podia utilizar o utilitário screen.

A escolha do screen para mim é óbvia porque normalmente é a forma mais fácil de aceder ao irc.freenode.net mantendo o meu nick logado.

[ad#ad-1] No entanto o Gonçalo Silva sugeriu nos comentários que para a tarefa em questão havia alternativas melhores que o screen.

Do brainstorming nos comentários surgiram duas alternativas ao screen:

1) Utilizar o nohup nohup ./task.sh &

O nohup permite correr o processo evitando que este responda ao sinal HUP (hangup) o que lhe permite continuar a correr mesmo depois do fechar da sessão que o iniciou.

2) Utilizar parêntesis para colocar o comando como child do init e não da shell em questão: (./task.sh &)

Os parêntesis, segundo o Gonçalo, colocam a tarefa como child do init (pid 1) que é o processo pai de todos os outros processos.

Obrigado ao Gonçalo por ter ensinado mais um truque.