Que fait -HUP lorsqu'il est utilisé avec killall?

16

Parfois, lorsque j'exécute une killallcommande à partir de Terminal, un collègue suggère ou modifie mes scripts à afficher killall -HUP.

Que fait la -HUPpièce?

Danijel-James W
la source
Voici la page de manuel Apple pour killall: developer.apple.com/library/mac/documentation/Darwin/Reference/… elle ressemble à h = help, u = user et p = process. Mais ce sont tous des minuscules. Je ne vois pas les paramètres majuscules sur la page de manuel, mais les majuscules peuvent avoir des significations complètement différentes - ou elles peuvent ne pas exister ..
David DelMonte

Réponses:

21

L' -HUPoption est le signal envoyé aux processus par la killallcommande. Cela peut être un peu difficile à dire, mais l'entrée pertinente dans le killallmanuel est:

-SIGNAL     Send a different signal instead of the default TERM.  The signal may be specified
            either as a name (with or without a leading SIG), or numerically.

La différence entre le TERMsignal par défaut qui killallenvoie et le HUPsignal dépend en grande partie du programme auquel vous envoyez le signal. A la fin du programme, ils reçoivent une valeur de signal d'interruption différente. Le programme peut donc intercepter les interruptions et décider, en fonction de la valeur, s'il doit faire une chose ou l'autre.

Le TERMsignal (historiquement le "signal de terminaison") est généralement envoyé à un programme pour demander sa terminaison (qui est une version plus polie de forcer sa terminaison avec le KILLsignal). Le programme est libre d'attraper et d'ignorer le TERMsignal. Il n'a pas à se terminer s'il ne le souhaite pas et il peut ignorer complètement ce signal.

Le HUPsignal (historiquement le "signal de raccrochage") est généralement envoyé à un programme pour lui demander de redémarrer et de relire toute sa configuration dans le processus. Le comportement réel du programme dépend de la mise en œuvre spécifique au programme. Tous les programmes n'attrapent pas HUPet ils ne sont pas tenus de le faire par convention ou dogme. Par exemple, le serveur Web Apache captera un HUPsignal et relira tous ses fichiers de configuration, mais il ne redémarrera aucun processus.

Si vous voulez vraiment mettre fin aux processus et ne pas vous inquiéter de savoir s'ils vont attraper et obéir au signal, utilisez le KILLsignal. Il ne peut pas être intercepté ou ignoré et entraîne l'arrêt du processus.

Pour un bon examen des signaux POSIX disponibles, consultez cet article Wikipedia .

Ian C.
la source
2
Au bas de la page de manuel de killall, dans la section VOIR AUSSI, se trouve un lien vers la page de manuel kill qui répertorie certains signaux et ce qu'ils font.
Ian C.
Je fais partie de ces #FAILgens qui n'ont jamais lu après les commutateurs. Je vous remercie!
Danijel-James W
En tant que "signal de raccrochage", HUP est généralement envoyé à un programme lorsque l'utilisateur se déconnecte ou termine le shell qui a démarré le programme. Si la capture du signal n'est pas implémentée par le programme, le programme se terminera généralement. Comme indiqué ci-dessus, le programme recevant le signal peut mettre en œuvre toute activité souhaitée à la suite de la capture du signal, comme indiqué par l'exemple Apache.
nachbar
2

C'est -HUPle signal "raccrocher" qui peut déclencher la fermeture d'une application, lire son fichier de configuration, puis recommencer. Ce n'est pas nécessairement mieux que de l'utiliser sans.

killall Finder

et

killall -HUP Finder

Sont respectueusement les mêmes. Dans OS X Finder va relancer, mais il relira son fichier de configuration. Ce n'est peut-être pas vraiment le cas si l'application en cours d'exécution n'a pas de -HUPfonction intégrée. Comme l'a mentionné l'affiche précédente, Apache. Il lit ses fichiers de configuration, mais il ne peut pas se relancer.

Tech29
la source