nohup
attrape le signal de raccrochage (voir man 7 signal
) alors que l'esperluette ne le fait pas (sauf si le shell est configuré de cette façon ou n'envoie pas SIGHUP
du tout).
Normalement, lorsqu'on exécute une commande en utilisant &
et en quittant l'interpréteur de commandes par la suite, l'interpréteur de commandes mettra fin à la sous-commande avec le signal de suspension ( kill -SIGHUP <pid>
). Cela peut être évité en utilisant nohup
Le système de gestion de l'information de l'entreprise a été conçu de telle sorte qu'il capte le signal et l'ignore, de sorte qu'il n'atteint jamais l'application réelle.
Dans le cas où vous utilisez bash, vous pouvez utiliser la commande shopt | grep hupon
pour savoir si votre shell envoie SIGHUP à ses processus enfants ou non. S'il est désactivé, les processus ne seront pas terminés, comme cela semble être le cas pour vous. Plus d'informations sur la façon dont bash termine les des applications peuvent être trouvées aquí .
Il y a des cas où nohup
ne fonctionne pas, par exemple lorsque le processus que vous lancez se reconnecte le site SIGHUP
signal, comme c'est le cas aquí .
0 votes
Quel shell utilisez-vous ? Le comportement varie selon les shells.
1 votes
Bash. Et je sais maintenant pourquoi d'après la réponse de @nemo.
1 votes
@Yarkee si la réponse convient à votre problème, veuillez marquer la question comme acceptée (la case à cocher sous les votes de la réponse) afin qu'elle ne traîne pas comme sans réponse. Vous devriez faire de même pour toutes vos questions :)
1 votes
shutdown
devrait être évité en tant que terme ayant une signification spécifique à Linux, et être remplacé parexit
.