Gestire i servizi con systemctl sul Suo VPS
Sul Suo VPS girano programmi che devono essere sempre attivi: il server SSH, un server web, un database. Questi programmi si chiamano servizi. Su Debian, Ubuntu, AlmaLinux e Rocky Linux è systemd ad avviarli e sorvegliarli, e systemd si gestisce con il comando systemctl. Questi sono i comandi di cui avrà bisogno più spesso.
Lo stato di un servizio
systemctl status nginx
L'estensione .service si può omettere. Legga l'output dall'alto verso il basso:
- Il pallino davanti al nome è verde se il servizio è in esecuzione, bianco se è fermo e rosso se è fallito.
- Loaded indica se il servizio si avvia all'accensione (
enabled) oppure no (disabled). - Active indica se è in esecuzione in questo momento (
active (running)), se è fermo (inactive (dead)) o se è fallito (failed), e da quando. - In fondo si trovano le ultime righe del registro del servizio. Spesso lì è già indicato il motivo di un problema.
Avviare, arrestare e ricaricare
| Comando | Cosa fa |
|---|---|
sudo systemctl start nginx | Avvia subito |
sudo systemctl stop nginx | Arresta subito |
sudo systemctl restart nginx | Arresta e avvia di nuovo |
sudo systemctl reload nginx | Rilegge la configurazione senza arrestarsi |
La differenza tra restart e reload è importante. Con un restart il servizio si ferma per un momento e, se nella nuova configurazione c'è un errore, non si riavvia più e il Suo sito web va offline. Con un reload il servizio resta in esecuzione; in caso di errore nginx mantiene la configurazione precedente. Per questo motivo verifichi prima la configurazione (sudo nginx -t, sudo sshd -t) e usi poi reload. Non tutti i servizi supportano reload; sudo systemctl reload-or-restart sceglie automaticamente.
All'avvio del sistema: enable e disable
Avviare un servizio e "avviarlo all'accensione" sono due cose diverse. Se avvia un servizio solo con start, dopo il riavvio successivo, ad esempio a causa di un aggiornamento del kernel, non sarà più attivo.
| Comando | Cosa fa |
|---|---|
sudo systemctl enable --now nginx | Avvia subito e d'ora in poi a ogni accensione. Lo usi per un nuovo servizio |
sudo systemctl disable --now nginx | Arresta subito e non avvia più all'accensione |
systemctl is-enabled nginx | Mostra se il servizio si avvia all'accensione |
Cosa non funziona? E cosa è in esecuzione?
systemctl --failed
Questo comando mostra tutti i servizi falliti. L'elenco dovrebbe essere vuoto. Lo controlli dopo ogni riavvio e ogni aggiornamento. Una volta risolto il problema, rimuove la segnalazione con sudo systemctl reset-failed.
systemctl list-units --type=service --state=runningmostra tutti i servizi in esecuzione. Se non ne conosce uno, verifichi a cosa serve. Un servizio di cui non ha bisogno è un punto di accesso superfluo.systemctl list-timersmostra le attività pianificate di systemd, con l'ultima esecuzione e la prossima. In questo modo vede, ad esempio, se i timer per gli aggiornamenti automatici o per il rinnovo dei certificati sono attivi.
I registri di un servizio
Se desidera vedere più delle poche righe mostrate da systemctl status, usi journalctl:
sudo journalctl -u nginx --since "1 hour ago" sudo journalctl -u nginx -p err -b
Il primo comando mostra tutto ciò che riguarda nginx nell'ultima ora, il secondo solo gli errori dall'ultimo riavvio. Altri comandi sono descritti in Leggere i log con journalctl e docker logs.
Modificare le impostazioni di un servizio
Non modifichi mai il file unit di un pacchetto (in /usr/lib/systemd/system/), perché un aggiornamento lo sovrascrive. Usi invece sudo systemctl edit nginx: questo comando crea un piccolo file contenente solo le Sue modifiche e fa rileggere la configurazione a systemd. Con systemctl cat nginx vede quale configurazione è effettivamente in vigore.
sudo systemctl reboot, oppure Riavviare nella schermata del VPS. Lo spegnimento forzato equivale a staccare la spina: i servizi non hanno modo di arrestarsi correttamente e un database può danneggiarsi. Consulti La schermata del VPS: accensione e spegnimento, grafici, sistema e registro.Su AlmaLinux e Rocky Linux systemctl funziona esattamente allo stesso modo, solo che alcuni servizi hanno un nome diverso: il servizio SSH si chiama sshd anziché ssh, Apache si chiama httpd e il firewall firewalld.
Desidera saperne di più? Segua il corso gratuito VPS e amministrazione di server Linux, lezione 6.1 Gestire i servizi con systemd o lezione 6.2 Leggere i log con journalctl.
