RedHat / CentOS 7 – Far ripartire automaticamente un processo dopo un crash

Ci sono dei processi su un server che abbiamo necessità siano sempre up, ovvero funzionanti. Può accadere che a causa di un crash questi cadano e purtroppo, tranne alcuni casi, siamo costretti a controllare manualmente e  a intervenire per riavviarli da console. Vedremo come fare in modo da impostare un processo in modo tale che in caso di caduta riparta da solo in automatico. Va da sé che se il nostro processo ha delle problematiche tali che cade in continuazione anche se riavviato dobbiamo capire perché questo succede ed eliminare la causa del malfunzionamento. Ma per fortuna la maggior parte delle volte un processo può essere fatto ripartire senza problemi. Farò l’esempio del demone “ntpd” (l’aggiornamento dell’ora esatta) perché mi capita, specialmente sui Raspberry, di trovarlo qualche volta “caduto” misteriosamente.

Premetto che questa procedura funziona esclusivamente sulle distribuzioni di Linux che utilizzano “systemd” come controllore di processi, quindi Raspbian Jessie e Centos 7 nel caso dei Raspberry. Nelle distro precedenti, basate su “initd” si interveniva all’interno del file /etc/inittab o con l’upstart e non mi dilungherò su queste procedure.

Innanzitutto avremo fatto in modo che il nostro servizio sia in grado di ripartire automaticamente al reboot del server, tramite il comando:

Fatto questo entreremo nella directory sotto indicata e cercheremo il file .service associato al nostro servizio:

Eccolo qui, evidenziato (ntpd.service). Apriamo un editor e aggiungiamo nella sezione Service la riga contenente Restart=always

Salviamo il file, ricarichiamo i demoni e facciamo ripartire il nostro servizio.

A questo punto per testare se effettivamente funziona la ripartenza automatica NON useremo un comando systemctl stop, che essendo uno stop volontario non causerà una ripartenza ma dovremo fare un kill del processo, simulando un crash. Facciamo ad esempio un systemctl status ntpd e leggiamo il Main PID del processo. Supponendo sia 8382 diamo poi un comando:

Chiedendo di nuovo lo status del processo vedremo che è stato immediatamente fatto ripartire, ovvero lo troveremo in stato active running.

 

 

Lascia un commento