In un sistema Linux, i servizi (chiamati anche demoni) svolgono un ruolo fondamentale nella gestione di vari compiti come l’hosting web, la gestione dei database e il networking. Tuttavia, i servizi possono a volte arrestarsi o fermarsi a causa di errori, elevato utilizzo delle risorse o guasti imprevisti del sistema.
Per prevenire tempi di inattività e garantire operazioni fluide, gli amministratori di sistema possono configurare i servizi per riavviarsi automaticamente ogni volta che falliscono, il che è particolarmente utile per i server web (Apache, Nginx), i database (MySQL, PostgreSQL) o altre applicazioni critiche che devono essere disponibili in ogni momento.
In questa guida, spiegheremo come utilizzare systemd per configurare un servizio Linux per riavviarsi automaticamente se si ferma.
Perché riavviare un servizio automaticamente?
Ci sono diverse ragioni per cui potresti voler riavviare automaticamente un servizio in Linux:
- Minimizzare i tempi di inattività: Se un servizio si ferma inaspettatamente, i riavvii automatici garantiscono che gli utenti subiscano interruzioni minime.
- Migliorare l’affidabilità: Servizi come server web, database e processi in background dovrebbero sempre essere attivi.
- Ridurre il lavoro manuale: Senza automazione, dovresti controllare frequentemente i servizi e riavviarli manualmente se falliscono.
- Gestire i guasti imprevisti: Se un servizio si arresta a causa di bug software, limiti di risorse o errori di sistema, systemd può riavviarlo senza intervento dell’amministratore.
Ora, vediamo i passaggi per impostare il riavvio automatico utilizzando systemd.
Passo 1: Identificare il Servizio che Vuoi Riavviare
Prima di apportare modifiche, è necessario conoscere il nome esatto del servizio che si desidera configurare elencando tutti i servizi in esecuzione.
systemctl list-units --type=service --state=running

Se conosci già il nome del servizio, puoi controllarne lo stato.
systemctl status apache2

Sostituisci apache2
con il nome effettivo del servizio che vuoi gestire.
Passo 2: Modifica la Configurazione del Servizio
Systemd ti consente di modificare il comportamento del servizio utilizzando file di configurazione personalizzati. Invece di modificare le impostazioni a livello di sistema (che possono essere sovrascritte durante gli aggiornamenti), utilizzeremo systemctl edit
per creare un file di sovrascrittura.
Esegui il seguente comando:
systemctl edit apache2
Questo aprirà un file vuoto nel tuo editor di testo predefinito.
Se il file non è vuoto, vedrai impostazioni esistenti che puoi modificare. Altrimenti, dovrai aggiungere la configurazione di riavvio necessaria.

Passo 3: Aggiungi la Configurazione di Riavvio di Systemd
Nel’editor, aggiungi le seguenti righe.
[Service] Restart=always RestartSec=5s
Spiegazione di queste impostazioni:
Restart=always
– Garantisce che il servizio venga riavviato ogni volta che si ferma, indipendentemente dal motivo.RestartSec=5s
– Indica a systemd di attendere 5 secondi prima di riavviare il servizio, il che può prevenire loop di riavvio rapidi in caso di guasti ripetuti.
Una volta aggiunto, salva e chiudi il file.

Dopo aver apportato modifiche a un servizio systemd, è necessario ricaricare systemd e riavviare il servizio per assicurarsi che la nuova configurazione venga applicata:
sudo systemctl daemon-reload sudo systemctl restart apache2
Per confermare che il servizio sia ora impostato per riavviarsi automaticamente, esegui:
sudo systemctl show apache2 | grep Restart
Se tutto è configurato correttamente, dovresti vedere:
Restart=always
Passo 4: Testare il Riavvio Automatico in Linux
Per garantire che la configurazione funzioni, puoi fermare manualmente il servizio e controllare se si riavvia.
sudo systemctl stop apache2
Aspetta 5 secondi, poi controlla il suo stato.
sudo systemctl status apache2
Se il servizio è di nuovo in esecuzione, il riavvio automatico funziona!
Opzioni di Riavvio Aggiuntive
A seconda delle tue esigenze, systemd fornisce diverse politiche di riavvio:
Restart=always
– Il servizio si riavvia sempre, anche se è stato fermato manualmente.Restart=on-failure
– Riavvia solo se il servizio esce con un errore (ma non se fermato manualmente).Restart=on-abnormal
– Riavvia il servizio se si blocca a causa di un segnale (come un errore di segmentazione).Restart=on-watchdog
– Riavvia il servizio se scade mentre è in esecuzione.
Puoi sostituire Restart=always
con una di queste opzioni in base alle tue esigenze.
Come controllare i log dei servizi per problemi
Se un servizio continua a fallire, è buona norma controllare i log utilizzando il comando journalctl, che mostrerà i log del servizio negli ultimi 10 minuti.
journalctl -u apache2 --since "10 minutes ago"
Per uno streaming di log in tempo reale, usa:
journalctl -u apache2 -f
Conclusione
Impostare riavvii automatici per i servizi che falliscono garantisce che le applicazioni critiche continuino a funzionare senza intervento manuale. Utilizzando le opzioni di riavvio di systemd, puoi ridurre i tempi di inattività, migliorare la stabilità del sistema e ridurre la necessità di risoluzione manuale dei problemi.
Source:
https://www.tecmint.com/automatically-restart-service-linux/