disown
oblige un shell à ne pas envoyer SIGHUP à son travail renié lorsque le shell se termine, et
supprime le travail désavoué du contrôle du travail du shell.
Le premier est-il le résultat du second? En d'autres termes, si un processus démarré à partir d'un shell est supprimé du contrôle de travail du shell de quelque façon que ce soit, le shell n'enverra-t-il pas SIGHUP au processus lorsque le shell se terminera?
disown -h
garde toujours un processus sous le contrôle du travail d'un shell. Cela signifie-t-il que disown -h
fait qu'un processus reçoit toujours SIGHUP envoyé par le shell, mais configure l'action de SIGHUP par le processus pour qu'il soit "ignoré"? Cela ressemble à nohup
.
$ sleep 123 & disown -h
[1] 26103
$ jobs
[1]+ Running sleep 123 &
$ fg 1
sleep 123
$ ^Z
[1]+ Stopped sleep 125
$ bg 1
[1]+ sleep 123 &
$ exit
$ ps aux | grep sleep
t 26103 0.0 0.0 14584 824 ? S 15:19 0:00 sleep 123
Faire disown -h
et nohup
travailler efficacement la même chose, si nous ne tenons pas compte de leur différence dans l'utilisation d'un terminal?
Merci.
nohup
, vous devez rediriger stdin / stdout / stderr loin du TTY (si votre shell d'origine est connecté à un) vous-même. (OTOH, je considère en fait cette meilleure pratique que de compter sur un défaut codé en dur flagrant comme./nohup.out
).