GNU/Linux >> Linux Esercitazione >  >> Linux

Cosa può causare la generazione di SIGHUP?

I segnali possono essere inviati utilizzando kill utility o kill syscall. Naturalmente, puoi provare a scoprire chi sta inviando quel segnale o disconnettendo i tuoi terminali o le connessioni di rete, ma esiste un modo pratico più semplice per risolvere il tuo problema.

Quando il codice dovrebbe essere eseguito come demone, ma in realtà non lo è (proprio come il tuo), c'è un wrapper che può trasformare qualsiasi programma in demone. Sorpresa:questo wrapper si chiama daemon ! Ha molte opzioni, probabilmente la più importante per te, l'opzione per riavviare automaticamente la tua utilità se dovesse mai morire per qualsiasi motivo.

Se questo comando non è installato su Ubuntu, basta sudo apt-get install daemon e man daemon per iniziare.


Bene, ci sono un paio di cose da notare su SIGHUP. In primo luogo, la sua origine deriva dal concetto di interruzione, ovvero perdita di connessione a una console tramite qualcosa come un modem. Nel gergo moderno questo generalmente significa che ha perso il suo tty di controllo. A meno che tu non abbia avuto cura di staccarti dal tuo tty, qualsiasi programma avviato in un dato terminale riceverà un SIGHUP quando il terminale viene chiuso. Vedi qui per i dettagli su come farlo nel tuo programma. Altre opzioni includono:

  • eseguendo il tuo programma all'interno di screen o tmux
  • esegui il tuo programma con nohup o qualche altro framework di demonizzazione

L'altra possibilità è che qualcosa stia deliberatamente inviando al tuo processo un SIGHUP che per "tradizione" è spesso usato per segnalare a un processo che dovrebbe rileggere la sua configurazione.


Linux
  1. un programma può leggere la propria sezione elfo?

  2. Cosa fare quando Ctrl + C non può terminare un processo?

  3. Determina se l'output è stdout o stderr

  4. Posso testare la mia rete?

  5. Come posso sapere cosa sta facendo girare il mio disco?

Cosa può fare per te un file dot di shell

Cos'è Bonjour sul mio computer? Guida per PC del programma Bonjour di Windows 10

Cosa uso su Linux per rendere eseguibile un programma Python

Cosa può causare un comando "Risorsa temporaneamente non disponibile" sul comando sock send()

Cosa può impedire al passaggio init=/path/to/program al kernel di avviare il programma come init?

Un processo può avere un proprietario? Cosa significa?