Comportamento del programma quando si riceve kill -HUP?


32

C'è un modo per scoprire cosa farà il programma quando riceverà il segnale di interruzione HUP?
Senza semplicemente eseguire il comando ofc: D

Ad esempio, il
killall -HUP pppdriavvio di pppd
killall -HUP firefoxucciderà semplicemente Firefox

Risposte:


47

Leggi la sua documentazione. Questo è l'unico modo. Come già scritto da Keith , il significato originale di SIGHUP era che l'utente aveva perso l'accesso al programma e quindi i programmi interattivi sarebbero morti. I demoni - programmi che non interagiscono direttamente con l'utente - non hanno bisogno di questo comportamento e spesso ricaricano i loro file di configurazione quando ricevono SIGHUP. Ma queste sono solo convenzioni.

Se hai la fonte, puoi leggere anche quella. Oppure, se hai solo il binario, puoi provare a smontarlo, cercare le sigactionchiamate per impostare un gestore di segnale SIGHUPe provare a capire cosa stanno facendo quei gestori di segnale. Sarà più facile organizzare in primo luogo non inviare SIGHUP a quel programma.

In qualsiasi momento, un determinato processo si trova in uno dei tre stati rispetto a un determinato segnale: ignorarlo, eseguire l'azione predefinita o eseguire un gestore personalizzato. Molti unices ti permettono di vedere la maschera di segnale di un processo con ps, ad esempio con ps ssu Linux. Questo può dirti se il processo ignora il segnale o morirà istantaneamente su SIGHUP, ma se il processo ha impostato un gestore non puoi dire cosa fa il gestore.


1
SIGHUP risale ai tempi dei modem dial-up. Ha segnalato un Hang-UP della connessione modem. Si applica ancora alle connessioni interrotte, ma oggigiorno è raramente un blocco che causa l'interruzione della connessione. P
BillThor,

@bill True, ma anche una sessione SSH SIGHUP è un processo figlio se perde la connessione client.
Keith il

@Keith: ecco perché ho indicato che si applica alle connessioni interrotte ed è raramente causato da riattacchi. Sarebbe confuso a questo punto cambiare il suo nome in qualcosa di correlato alle disconnessioni, come SIGDCN.
BillThor,

18

L'azione predefinita è terminare il processo su SIGHUP. Vedi man 7 signalper maggiori dettagli. Ma i programmi possono intrappolarlo e fare quello che vogliono. Poiché i processi daemon non dovrebbero mai uscire, usano comunemente SIGHUP per altri scopi, come reinizializzare se stessi (come fa pppd). Firefox mantiene l'azione predefinita.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.