Spesso si verifica una caduta spontanea del servizio. L'utente deve occuparsi del ripristino manuale. Non c'è alcun problema in quanto tale, se ciò avviene su un computer di casa. Anzi, è un bene, perché c'è una reale opportunità di determinare lo stato del servizio, identificare i guasti ed eliminarli. Ma la situazione è ben diversa quando si tratta di server e servizi VPS, che devono lavorare costantemente per fornire l'accesso a un sito web o a un'applicazione. In questo articolo vedremo come configurare il riavvio automatico dei servizi Linux in diversi modi: con uno script di monitoraggio eseguito periodicamente tramite cron e in systemd.
L'impostazione predefinita prevede che Systemd non faccia nulla con il servizio se si blocca. Ma l'utente può sempre configurare le impostazioni in modo tale che, in caso di arresto o crash del servizio, questo venga riavviato automaticamente. A tale scopo, si utilizza la direttiva Restart, da aggiungere alla sezione Service. Vediamo quindi un esempio di configurazione del riavvio automatico del servizio Apache:
$ sudo systemctl edit apache2
[Service]
Restart=on-failure
RestartSec=5s
Qui RestartSec specifica il tempo di attesa prima di riavviare il servizio. Al termine, salvare le modifiche ed eseguire il comando daemon-reload per rileggere la configurazione:
$ sudo systemctl daemon-reload
Successivamente, per verificare se tutto funziona correttamente, si può esaminare lo stato del processo, terminandolo con un segnale di kill:
$ sudo systemctl status apache2
$ kill -KILL 32091
Controllare nuovamente lo stato, il processo dovrebbe essere in esecuzione. Per impostare l'inizializzazione in modo che venga eseguita ogni volta, si può usare la direttiva speciale Restart: always. Ma bisogna fare molta attenzione quando la si usa, perché non consente di terminare il processo anche se è necessario. Se il processo si blocca continuamente, per cui viene riavviato, si può aggiungere un limite al numero di riavvii alla sezione Service:
$ sudo systemctl edit apache2
[Service]
StartLimitIntervalSec=500
StartLimitBurst=5
Restart=on-failure
RestartSec=5s
Qui StartLimitBurst
e StartLimitIntervalSec
indicano l'importanza di riavviare il servizio cinque volte e, se si blocca tutte e cinque le volte, di lasciarlo stare e non toccarlo. La seconda direttiva limita i riavvii del servizio a 500 secondi.
Questo è probabilmente il metodo più affidabile e a prova di errore che funziona in tutte le versioni di Linux. In Apache è facile creare un riavvio automatico utilizzando uno script. Per farlo, è necessario inserire il comando:
$ sudo vi /usr/local/bin/apache-monitor.sh
#!/bin/bash
ps -A | grep apache2 || systemctl start apache2
Salvare il file e assicurarsi di renderlo eseguibile:
chmod ugo+x /usr/local/bin/apache-monitor.sh
Non dimenticate di aggiungere una voce cron per eseguire lo script periodicamente:
$ sudo crontab -e
*/5 * * * * /usr/local/bin/apache-monitor.sh
Tutto qui. L'impostazione del riavvio automatico del servizio non è così semplice come può sembrare a prima vista. Ma si tratta di un'abilità importante, quindi dovreste prestarvi attenzione: ne vale sicuramente la pena.
Apply the discount by inserting the promo code in the special field at checkout:
Apply the discount by inserting the promo code in the special field at checkout: