Poser cette question après une longue discussion avec un collègue, je voudrais vraiment une clarification ici.
Je lance un processus d'arrière-plan, soit en ajoutant " &" à la ligne de commande, soit en l'arrêtant CTRL-Zet en le reprenant en arrière-plan avec " bg". Ensuite, je me déconnecte.
Ce qui se produit?
Nous étions sûrs qu'il aurait dû être tué par un SIGHUP, mais cela ne s'est pas produit; lors de la reconnexion, le processus était en cours d'exécution et a pstreemontré qu'il était "adopté" par init.
Est-ce le comportement attendu?
Mais alors, si c'est le cas, quel est le nohupbut de la commande? Il semble que le processus ne sera pas tué de toute façon, avec ou sans lui ...
Modifier 1
Quelques détails supplémentaires:
- La commande a été lancée à partir d'une session SSH, pas à partir de la console physique.
- La commande a été lancée sans
nohupet / ou&; il a ensuite été suspendu avecCTRL-Zet repris en arrière-plan avecbg. - La session ssh n'a pas chuté. Il y a eu une déconnexion réelle (
exitcommande " "). - Le processus était une
scpopération de copie de fichiers. - Lorsque vous vous reconnectez,
pstreele processus est en cours d'exécution et est enfant deinit.
Modifier 2
Pour énoncer plus clairement la question: mettre un processus en arrière-plan (en utilisant &ou bg) le fera-t-il ignorer SIGHUP, tout comme la nohupcommande?
Modifier 3
J'ai essayé d'envoyer manuellement un SIGHUPà scp: il s'est arrêté, donc il n'ignore certainement pas le signal.
Ensuite, j'ai essayé de nouveau de le lancer, de le mettre en arrière-plan et de me déconnecter: il a été "adopté" par initet a continué à fonctionner, et je l'ai trouvé là lors de la reconnexion.
Je suis assez perplexe maintenant. On dirait que non a SIGHUPété envoyé du tout jusqu'à la fermeture de session.
1>/dev/null 2>&1pour bash, etc.?