GNU/Linux >> Linux Esercitazione >  >> Linux

Come riavviare (o ripristinare) un processo in esecuzione in Linux?

Ho due sistemi Linux che comunicano su socket (desktop e scheda di sviluppo basata su ARM).

Voglio riavviare (o ripristinare) la mia applicazione client (in esecuzione su una scheda di sviluppo) quando il server invia un particolare messaggio predefinito. Non voglio riavviare (riavviare) Linux, voglio solo che l'applicazione client si riavvii automaticamente.

Non riesco a capire come dovrebbe essere fatto.

Risposta accettata:

Il modo normale per farlo è lasciare che il tuo programma esca e utilizzare un sistema di monitoraggio per riavviarlo. Il init programma offre un tale sistema di monitoraggio. Esistono molti programmi init diversi (SysVinit, BusyBox, Systemd, ecc.), con meccanismi di configurazione completamente diversi (scrivendo sempre un file di configurazione, ma la posizione e la sintassi del file differiscono), quindi cercate la documentazione di quello che avete stai usando. Configura init per avviare il tuo programma all'avvio o su richiesta esplicita e per riavviarlo se muore. Esistono anche programmi di monitoraggio più elaborati ma non sembra che tu ne abbia bisogno. Questo approccio ha molti vantaggi rispetto al fatto che il programma esegua il riavvio da solo:è standard, quindi puoi riavviare un sacco di servizi senza doversi preoccupare di come sono realizzati; funziona anche se il programma muore a causa di un bug.

Esiste un meccanismo standard per dire a un processo di uscire:i segnali. Invia al tuo programma un segnale TERM. Se il tuo programma ha bisogno di eseguire una pulizia, scrivi un gestore di segnale. Ciò non impedisce di avere un comando specifico del programma per spegnerlo se hai un canale amministrativo per inviargli comandi come questo.


Linux
  1. Come uccidere un processo zombie su Linux

  2. Linux:come ottenere l'ora dell'orologio da parete di un processo in esecuzione?

  3. Come uccidere un processo in esecuzione su una porta specifica in Linux?

  4. Come verificare se un processo è ancora in esecuzione utilizzando Python su Linux?

  5. Come impostare l'ID processo in Linux per un programma specifico

Come elencare i processi in esecuzione in Linux:una guida per principianti

Come uccidere un processo in Linux

Come scoprire da quanto tempo è in esecuzione un processo in Linux

Come trovare e uccidere i processi in esecuzione in Linux

Come eliminare l'esecuzione del processo Linux su una porta particolare

Come KILL un processo su Linux