Qual é a diferença entre nohup e “& nohup.out &”?

5
nohup processa um processo imune ao SIGHUP do shell, mas mesmo se eu rodar isso do meu shell:

bash -c 'while true; do sleep 1; date; done' >& nohup.out &

faça logout e faça login novamente, o bash ainda está em execução e produzindo a saída para nohup.out. Existe alguma diferença? Está confiando apenas no redirecionamento menos confiável de alguma forma?

    
por Yang 12.08.2010 / 03:04

2 respostas

5

No bash, os trabalhos em segundo plano não precisam ser protegidos por nohup

Dependendo da sua versão do bash, o comportamento pode ser alterado. Na seção SIGNALS da página de manual

If the huponexit shell option has been set with shopt, bash sends a SIGHUP to all jobs when an interactive login shell exits.

A opção huponexit é desativada

    
por 16.08.2010 / 10:33
1

nohup permite que você desconecte a execução do shell ,

Nohuping backgrounded jobs is typically used to avoid terminating them when logging off from a remote SSH session. A different issue that often arises in this situation is that ssh is refusing to log off ("hangs"), since it refuses to lose any data from/to the background job(s).

This problem can also be overcome by redirecting all three I/O streams:
nohup ./myprogram > foo.out 2> foo.err < /dev/null &

Outra referência ao caso de desconfiança do SSH .

    
por 12.08.2010 / 06:23