Was macht -HUP, wenn es mit killall verwendet wird?

16

Manchmal, wenn ich einen killallBefehl über Terminal ausführe, schlägt ein Mitarbeiter meine anzuzeigenden Skripte vor oder bearbeitet sie killall -HUP.

Was macht das -HUPTeil?

Danijel-James W
quelle
Hier ist die Apple-Manpage für killall: developer.apple.com/library/mac/documentation/Darwin/Reference/… es sieht aus wie h = help, u = user und p = process. Aber das sind alles Kleinbuchstaben. Ich sehe keine Parameter in Großbuchstaben auf der Manpage, aber Großbuchstaben können ganz andere Bedeutungen haben - oder sie existieren nicht.
David DelMonte

Antworten:

21

Die -HUPOption ist das Signal, das vom killallBefehl an die Prozesse gesendet wird . Es kann ein wenig schwer zu sagen sein, aber der relevante Eintrag im killallHandbuch lautet:

-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.

Der Unterschied zwischen dem TERMgesendeten Standardsignal killallund dem HUPSignal hängt weitgehend von dem Programm ab, an das Sie das Signal senden. Am Programmende erhalten sie einen anderen Alarmsignalwert. So kann das Programm die Interrupts abfangen und basierend auf dem Wert entscheiden, ob sie das eine oder andere tun sollen.

Das TERMSignal (in der Vergangenheit das "Beendigungssignal") wird normalerweise an ein Programm gesendet, um dessen Beendigung anzufordern (was eine politischere Version ist , um dessen Beendigung mit dem KILLSignal zu erzwingen ). Das Programm kann das TERMSignal abfangen und ignorieren . Es muss nicht terminieren, wenn es nicht will, und es kann dieses Signal vollständig ignorieren.

Das HUPSignal (in der Vergangenheit das "Aufhängesignal") wird normalerweise an ein Programm gesendet, um einen Neustart anzufordern und dabei die gesamte Konfiguration neu zu lesen. Das tatsächliche Verhalten des Programms hängt von der programmspezifischen Implementierung ab. Nicht alle Programme fangen an HUPund sie sind nicht durch Konventionen oder Dogmen dazu verpflichtet. Der Apache-Webserver empfängt beispielsweise ein HUPSignal und liest alle Konfigurationsdateien erneut, startet jedoch keine Prozesse neu.

Wenn Sie die Prozesse wirklich beenden möchten und sich keine Gedanken darüber machen möchten, ob das Signal abgefangen und befolgt werden soll, wird das Signal verwendet KILL. Es kann nicht abgefangen oder ignoriert werden und führt zum Abbruch des Prozesses.

Eine gute Übersicht über die verfügbaren POSIX-Signale finden Sie in diesem Wikipedia-Artikel .

Ian C.
quelle
2
Unten auf der Manpage für killall im Abschnitt SIEHE AUCH befindet sich ein Link zur Kill-Manpage, auf der einige Signale aufgelistet sind und was sie tun.
Ian C.
Ich gehöre zu jenen #FAILLeuten, die nie hinter den Schaltern lesen. Vielen Dank!
Danijel-James W
Als "Aufhängesignal" wird HUP normalerweise an ein Programm gesendet, wenn sich der Benutzer abmeldet oder die Shell beendet, die das Programm gestartet hat. Wenn das Abfangen des Signals vom Programm nicht implementiert wird, wird das Programm normalerweise beendet. Wie oben erwähnt, kann das Programm, das das Signal empfängt, jede gewünschte Aktivität als Ergebnis des Abfangens des Signals implementieren, wie dies durch das Apache-Beispiel angezeigt wird.
Nachbar
2

Dies -HUPist das "Auflegen" -Signal, das dazu führen kann, dass eine App nicht mehr reagiert, ihre Konfigurationsdatei liest und dann erneut startet. Es ist nicht unbedingt besser als es ohne zu benutzen.

killall Finder

und

killall -HUP Finder

Sind respektvoll gleich. In OS X wird Finder neu gestartet, aber die Konfigurationsdatei wird erneut gelesen. Dies ist möglicherweise nicht der Fall, wenn in der ausgeführten Anwendung die -HUPFunktion nicht integriert ist. Wie im vorherigen Poster erwähnt, Apache. Es liest die Konfigurationsdateien, kann jedoch nicht erneut gestartet werden.

Tech29
quelle