Cosa fa -HUP quando viene utilizzato con killall?


16

A volte, quando eseguo un killallcomando da Terminal, un collega suggerisce o modifica i miei script per mostrarli killall -HUP.

Cosa fa la -HUPparte?


Ecco la pagina man di Apple per killall: developer.apple.com/library/mac/documentation/Darwin/Reference/… sembra h = help, u = user e p = process. Ma quelli sono tutti minuscoli. Non vedo i parametri maiuscoli nella pagina man, ma i caratteri maiuscoli potrebbero avere significati completamente diversi - o potrebbero non esistere ..
David DelMonte,

Risposte:


21

L' -HUPopzione è il segnale che viene inviato ai processi dal killallcomando. Può essere un po 'difficile da dire, ma la voce pertinente nel killallmanuale è:

-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 differenza tra il TERMsegnale predefinito che killallinvia e il HUPsegnale dipende in gran parte dal programma a cui si sta inviando il segnale. Alla fine del programma, ricevono un diverso valore del segnale di interruzione. Quindi il programma può catturare gli interrupt e decidere, in base al valore, se dovrebbero fare una cosa o l'altra.

Il TERMsegnale (storicamente il "segnale di terminazione") viene in genere inviato a un programma per richiederne la chiusura (che è una versione più gentile di forzarne la chiusura con il KILLsegnale). Il programma è libero di catturare e ignorare il TERMsegnale. Non deve terminare se non lo desidera e può ignorare completamente questo segnale.

Il HUPsegnale (storicamente il "segnale di blocco") viene in genere inviato a un programma per richiedere il riavvio e la rilettura di tutta la sua configurazione nel processo. Il comportamento effettivo del programma dipende dall'attuazione specifica del programma. Non tutti i programmi catturano HUPe non sono richiesti per convenzione o dogma. Ad esempio, il web server Apache rileverà un HUPsegnale e rileggerà tutti i suoi file di configurazione ma non riavvierà alcun processo.

Se vuoi veramente terminare i processi e non preoccuparti se cattureranno e obbediranno, il segnale usa il KILLsegnale. Non può essere rilevato o ignorato e comporta la chiusura del processo.

Per una buona recensione dei segnali POSIX disponibili, consulta questo articolo di Wikipedia .


2
Nella parte inferiore della pagina man di killall, nella sezione VEDERE ANCHE, è presente un collegamento alla pagina man kill che elenca alcuni segnali e ciò che fanno.
Ian C.

Sono una di quelle #FAILpersone che non hanno mai letto oltre gli interruttori. Grazie!
Danijel-James W,

Come "segnale di blocco", HUP viene in genere inviato a un programma quando l'utente si disconnette o termina la shell che ha avviato il programma. Se la cattura del segnale non è implementata dal programma, il programma in genere termina. Come notato sopra, il programma che riceve il segnale può implementare qualsiasi attività desiderata come risultato della cattura del segnale, come indicato nell'esempio di Apache.
nachbar,

2

Il -HUPè il segnale di "hang up" che possono scatenare un app di cessare, leggerlo di file di configurazione, e poi ricominciare. Non è necessariamente meglio che usarlo senza.

killall Finder

e

killall -HUP Finder

Sono rispettosamente uguali. In OS X Finder verrà riavviato, ma rileggerà il suo file di configurazione. Questo potrebbe non essere realmente il caso se l'applicazione in esecuzione non ha la -HUPfunzione integrata. Come il precedente poster menzionava Apache. Legge i file di configurazione, ma non può essere riavviato.

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.