Programmverhalten beim kill -HUP erhalten?

32

Gibt es eine Möglichkeit herauszufinden, was das Programm tun wird, wenn es das Kill-Signal HUP empfängt?
Ohne einfach den Befehl von c: D auszuführen

Zum Beispiel
killall -HUP pppdwird pppd neu gestartet
killall -HUP firefox, um Firefox zu töten

bbaja42
quelle

Antworten:

47

Lesen Sie die Dokumentation. Das ist der einzige Weg. Wie Keith bereits schrieb , lautete die ursprüngliche Bedeutung von SIGHUP, dass der Benutzer den Zugriff auf das Programm verloren hatte und daher interaktive Programme abstürzen sollten. Daemons - Programme, die nicht direkt mit dem Benutzer interagieren - benötigen dieses Verhalten nicht und laden stattdessen häufig ihre Konfigurationsdateien neu, wenn sie SIGHUP erhalten. Dies sind jedoch nur Konventionen.

Wenn Sie die Quelle haben, können Sie das auch lesen. Wenn Sie nur die Binärdatei haben, können Sie versuchen, sie zu zerlegen, nach sigactionAufrufen zu suchen, für die ein Signalhandler eingerichtet wurde SIGHUP, und herauszufinden, was diese Signalhandler tun. Es wird einfacher sein, SIGHUP erst gar nicht an dieses Programm zu senden.

Zu jedem Zeitpunkt befindet sich ein bestimmter Prozess in Bezug auf ein bestimmtes Signal in einem von drei Zuständen: Ignorieren, Ausführen der Standardaktion oder Ausführen eines benutzerdefinierten Handlers. Viele Unices erlauben es, die Signalmaske eines Prozesses zu sehen ps, zB unter ps sLinux. Das kann Ihnen sagen, ob der Prozess das Signal ignoriert oder sofort bei SIGHUP abstürzt, aber wenn der Prozess einen Handler festgelegt hat, können Sie nicht sagen, was der Handler tut.

Gilles 'SO - hör auf böse zu sein'
quelle
1
SIGHUP geht auf die Zeit der DFÜ-Modems zurück. Es wurde ein Auflegen der Modemverbindung signalisiert. Es gilt immer noch für unterbrochene Verbindungen, aber heutzutage kommt es selten vor, dass die Verbindung unterbrochen wird.P
BillThor
@bill Stimmt, aber eine SSH-Sitzung SIGHUP auch seinen untergeordneten Prozess, wenn es seine Client-Verbindung verliert.
Keith
@Keith: Aus diesem Grund habe ich angegeben, dass dies auf unterbrochene Verbindungen zutrifft und selten mehr durch Auflegen verursacht wird. Es wäre zu diesem Zeitpunkt verwirrend, seinen Namen in einen Namen zu ändern, der mit Verbindungsabbrüchen zusammenhängt, z. B. SIGDCN.
BillThor
18

Die Standardaktion besteht darin, den Vorgang bei SIGHUP zu beenden. Sehen Sie man 7 signalfür weitere Details. Aber Programme können es einfangen und tun, was sie wollen. Da Dämonprozesse niemals beendet werden sollen, verwenden sie SIGHUP normalerweise für andere Zwecke, z. B. um sich selbst neu zu initialisieren (wie pppd es tut). Firefox behält die Standardaktion bei.

Keith
quelle