Gestire i servizi di sistema con systemctl in Linux

Pubblicato il 12 Novembre 2025 • Categoria: Linux

Se usi una distribuzione Linux moderna (come Ubuntu, Debian, Fedora o CentOS), il tuo sistema si basa quasi certamente su systemd, il gestore di init che ha sostituito gli script SysVinit. Il comando principale per interagire con i servizi di sistema è systemctl.

In questa guida imparerai a avviare, fermare, riavviare, abilitare e disabilitare servizi come SSH, Apache, MySQL, cron e molti altri, in modo sicuro e professionale.

Cos’è un “servizio” in Linux?

Un servizio (o daemon) è un programma che gira in background per svolgere funzioni specifiche: gestire connessioni di rete, stampanti, log, server web, ecc.

Esempi comuni:

Comandi fondamentali di systemctl

Tutti i comandi richiedono privilegi di amministratore quando si agisce su servizi di sistema. Usa sudo quando necessario.

1. Verificare lo stato di un servizio

systemctl status nome_servizio

Esempio:

systemctl status ssh

Mostra se il servizio è attivo (active (running)), inattivo, quando è stato avviato, eventuali errori e i log recenti.

2. Avviare un servizio (solo per la sessione corrente)

sudo systemctl start nome_servizio

Esempio:

sudo systemctl start apache2

Il servizio parte subito, ma non si avvierà automaticamente al prossimo riavvio.

3. Fermare un servizio

sudo systemctl stop nome_servizio

4. Riavviare un servizio

sudo systemctl restart nome_servizio

Utile dopo aver modificato un file di configurazione (es. /etc/apache2/apache2.conf).

5. Ricaricare la configurazione senza riavviare

sudo systemctl reload nome_servizio

Molti servizi (come Apache o Nginx) supportano il ricaricamento “graceful”, che evita interruzioni del servizio.

Abilitare o disabilitare l’avvio automatico

Questo è uno dei concetti più importanti: un servizio può essere attivo ora ma non abilitato all’avvio, e viceversa.

Abilitare un servizio all’avvio del sistema

sudo systemctl enable nome_servizio

Questo crea un collegamento simbolico nella directory di systemd, in modo che il servizio parta automaticamente al boot.

Disabilitare l’avvio automatico

sudo systemctl disable nome_servizio

Il servizio potrà ancora essere avviato manualmente, ma non si avvierà da solo al riavvio.

💡 Nota: enable/disable non avviano o fermano il servizio immediatamente. Usali insieme a start/stop se necessario.

Altri comandi utili

Elencare tutti i servizi

systemctl list-units --type=service --state=active # solo quelli attivi systemctl list-unit-files --type=service # tutti i servizi installati

Verificare se un servizio è abilitato

systemctl is-enabled nome_servizio

Risponde con enabled, disabled, static (non disabilitabile) o masked (bloccato).

Mascherare un servizio (bloccarlo completamente)

sudo systemctl mask nome_servizio

Impedisce qualsiasi avvio, anche manuale. Utile per disattivare servizi pericolosi o non necessari.

Per rimuovere il blocco:

sudo systemctl unmask nome_servizio

Esempi pratici

1. Configurare un server SSH sicuro

Dopo aver installato OpenSSH:

sudo systemctl start ssh sudo systemctl enable ssh systemctl status ssh

Ora il server SSH è attivo e si avvierà automaticamente al boot.

2. Riavviare il server web dopo una modifica

sudo nano /etc/nginx/sites-available/miosito sudo systemctl reload nginx # ricarica senza downtime

3. Disabilitare un servizio non necessario (es. Bluetooth su server)

sudo systemctl stop bluetooth sudo systemctl disable bluetooth

Riduci la superficie di attacco e risparmi risorse.

Consigli di sicurezza e best practice

Con questi comandi, avrai il pieno controllo sui servizi del tuo sistema Linux. Che tu stia gestendo un desktop personale o un server in produzione, systemctl è lo strumento indispensabile per mantenere tutto sotto controllo.

Prodotti Consigliati

Potrebbe interessarti anche...

Prodotti utili per ottimizzare e mantenere al meglio il tuo sistema.