- 1 1. Introduzione
- 2 2. Come visualizzare un elenco di servizi con systemctl
- 3 3. Gestione di base dei servizi con systemctl
- 4 4. Opzioni utili di systemctl e tecniche avanzate
- 5 5. Problemi comuni e risoluzione dei guasti
- 6 6. Riepilogo
- 7 7. Domande frequenti (FAQ)
- 7.1 Q1. Qual è la differenza tra systemctl e il comando service?
- 7.2 Q2. Qual è la differenza tra list-units e list-unit-files?
- 7.3 Q3. I servizi in stato statico possono essere avviati?
- 7.4 Q4. Un servizio è mascherato e non può essere avviato. Cosa devo fare?
- 7.5 Q5. Esiste un metodo GUI per visualizzare lo stato del servizio?
- 7.6 Q6. Dove dovrei posizionare i file unit personalizzati?
1. Introduzione
Quando si utilizza Linux, ci sono molte situazioni in cui si desidera verificare lo stato dei servizi o visualizzare un elenco di processi in esecuzione. In questi casi, il comando systemctl è estremamente utile.
Questo comando funziona con systemd, il sistema di avvio e gestore dei servizi utilizzato nelle distribuzioni Linux moderne. Fornisce un’ampia gamma di funzioni, tra cui il controllo dello stato dei servizi (unità), l’avvio, l’arresto, il riavvio dei servizi e la visualizzazione degli elenchi dei servizi.
Dal punto di vista di un “elenco dei servizi systemctl”, è possibile non solo visualizzare i servizi attualmente attivi, ma anche quelli disabilitati e quelli configurati per l’avvio automatico, consentendo di comprendere la configurazione complessiva del sistema da più angolazioni.
Questo capitolo spiega brevemente cos’è systemctl e delinea ciò che imparerai in questo articolo.
Che cos’è systemctl?
systemctl è lo strumento standard per controllare e ispezionare varie “unità” come servizi, target e punti di mount su distribuzioni Linux basate su systemd.
Ad esempio, viene utilizzato per avviare o arrestare servizi come Apache (httpd) e SSH, nonché per visualizzarne lo stato in forma di elenco.
La relazione tra systemd e systemctl
systemd è il meccanismo centrale responsabile dei processi di avvio di Linux e della gestione dei servizi, sostituendo sistemi più vecchi come SysVinit e Upstart. Lo strumento da riga di comando utilizzato per interagire con systemd è systemctl.
In altre parole, se systemd è il centro di comando, systemctl agisce come l’operatore che emette le istruzioni.
Cosa imparerai in questo articolo
Questo articolo risponde alle seguenti domande:
- Come puoi visualizzare un elenco dei servizi attualmente in esecuzione?
- Come visualizzare tutti i servizi, inclusi quelli inattivi?
- Come verificare se un servizio si avvia automaticamente all’avvio?
- Come interpretare l’output degli elenchi dei servizi?
Per garantire chiarezza ai principianti di Linux, vengono forniti esempi di comandi e spiegazioni dettagliate dell’output.
2. Come visualizzare un elenco di servizi con systemctl
Nell’amministrazione dei sistemi Linux, comprendere rapidamente l’elenco dei servizi è estremamente importante. Utilizzando il comando systemctl, è possibile controllare facilmente i servizi attivi, quelli inattivi e le impostazioni di configurazione dell’avvio.
Questa sezione spiega i metodi di elencazione dei servizi da tre prospettive differenti:
- Elenco dei servizi attivi
- Elenco di tutti i servizi (inclusi gli inattivi)
- Elenco dei file di unità dei servizi (incluse le impostazioni di avvio)
2.1 Visualizzare un elenco dei servizi attualmente attivi
Per controllare i servizi che sono attualmente in esecuzione, usa il comando seguente:
systemctl list-units --type=service
Questo comando visualizza un elenco di servizi attivi. L’output include i seguenti campi:
| Field | Description |
|---|---|
| UNIT | Service name (e.g., ssh.service) |
| LOAD | Whether the unit file is loaded |
| ACTIVE | Service state (e.g., active, inactive, failed) |
| SUB | More detailed status (e.g., running, exited, dead) |
| DESCRIPTION | Service description |
Queste informazioni ti permettono di determinare, ad esempio, se nginx è in esecuzione o quali servizi sono attualmente attivi.
2.2 Visualizzare tutti i servizi, inclusi gli inattivi
Per impostazione predefinita, list-units mostra solo i servizi attivi. Per includere i servizi inattivi, aggiungi l’opzione --all.
systemctl list-units --type=service --all
Questo visualizza i servizi inattivi e quelli che non sono mai stati avviati.
Puoi filtrare ulteriormente i risultati in base allo stato del servizio usando l’opzione --state=:
systemctl list-units --type=service --state=inactive
Questo è utile quando vuoi vedere solo i servizi arrestati.
2.3 Visualizzare un elenco dei file di unità dei servizi
Per verificare quali servizi sono abilitati o disabilitati all’avvio, usa il comando seguente:
systemctl list-unit-files --type=service
Questo comando visualizza tutti i file di unità dei servizi insieme ai loro stati di abilitazione o disabilitazione.
| STATE | Description |
|---|---|
| enabled | Automatically starts at boot |
| disabled | Does not start automatically |
| static | Cannot be enabled or disabled manually |
| masked | Explicitly disabled and cannot be started |
Questo elenco ti aiuta a capire visivamente quali servizi si avviano all’avvio e a identificare eventuali servizi mascherati per errore.
3. Gestione di base dei servizi con systemctl
Il comando systemctl consente di avviare, arrestare, riavviare i servizi e di configurare il comportamento all’avvio.
3.1 Avviare un servizio
sudo systemctl start service-name
Esempio:
sudo systemctl start httpd.service
3.2 Arrestare un servizio
sudo systemctl stop service-name
Esempio:
sudo systemctl stop sshd.service
3.3 Riavviare un servizio
sudo systemctl restart service-name
Esempio:
sudo systemctl restart nginx.service
3.4 Verificare lo stato del servizio
systemctl status service-name
Esempio:
systemctl status mysql.service
3.5 Abilitare l’avvio automatico
sudo systemctl enable service-name
Esempio:
sudo systemctl enable docker.service
3.6 Disabilitare l’avvio automatico
sudo systemctl disable service-name
Esempio:
sudo systemctl disable cups.service
3.7 Verificare lo stato dell’avvio
systemctl is-enabled service-name
enabled
4. Opzioni utili di systemctl e tecniche avanzate
4.1 Elencare le dipendenze dei servizi
systemctl list-dependencies service-name
4.2 Visualizzare il contenuto dei file di unità
systemctl cat service-name

4.3 Ricaricare i file di unità
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
4.4 Visualizzare i log del servizio
journalctl -u service-name
5. Problemi comuni e risoluzione dei guasti
5.1 Quando un servizio non riesce ad avviarsi
systemctl status service-name
journalctl -xe
5.2 Comprendere i messaggi di errore nell’output di status
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled)
Active: failed (Result: exit-code)
5.3 Servizi che si arrestano immediatamente dopo l’avvio
- Errori di configurazione
- Conflitti di porta
- File o directory mancanti
- Permessi insufficienti
5.4 Quando un servizio è mascherato
sudo systemctl unmask service-name
6. Riepilogo
La gestione dei servizi è una parte essenziale delle operazioni di sistema Linux, e systemctl svolge un ruolo centrale nel controllare e comprendere i servizi di sistema.
7. Domande frequenti (FAQ)
Questa sezione risponde alle domande più comuni su systemctl e la gestione dei servizi.
Q1. Qual è la differenza tra systemctl e il comando service?
A1.
systemctl è un comando di gestione dei servizi progettato per sistemi basati su systemd ed è lo strumento standard utilizzato dalla maggior parte delle distribuzioni Linux moderne come Ubuntu, CentOS e Fedora.
Al contrario, il comando service era utilizzato con i sistemi più vecchi basati su SysVinit. Sebbene possa ancora esistere per motivi di compatibilità, è fortemente consigliato utilizzare systemctl negli ambienti systemd.
Q2. Qual è la differenza tra list-units e list-unit-files?
A2.
list-unitsvisualizza le unità attualmente caricate, cioè i servizi in esecuzione o che sono stati usati di recente.list-unit-filesvisualizza tutti i file di unità e il loro stato di abilitazione (enabled, disabled, ecc.). In breve, uno mostra ciò che è attualmente attivo, mentre l’altro mostra come sono configurati i servizi.
Q3. I servizi in stato statico possono essere avviati?
A3.
Sì, i servizi in stato static possono essere avviati manualmente usando start. Tuttavia, non possono essere abilitati per l’avvio automatico al boot.
Ciò avviene perché i servizi statici sono progettati per essere avviati come dipendenze di altre unità.
Q4. Un servizio è mascherato e non può essere avviato. Cosa devo fare?
A4.
Un servizio masked è completamente disabilitato e non può essere avviato. Per risolvere il problema, rimuovi il mascheramento del servizio usando il comando seguente:
sudo systemctl unmask service-name
Dopo aver rimosso il mascheramento, puoi avviare il servizio normalmente.
Q5. Esiste un metodo GUI per visualizzare lo stato del servizio?
A5.
A seconda della distribuzione, strumenti come gnome-system-monitor, KSysGuard o Cockpit permettono di visualizzare lo stato dei servizi attraverso un’interfaccia grafica.
Tuttavia, per operazioni avanzate come l’abilitazione o la disabilitazione dei servizi all’avvio, systemctl rimane il metodo più affidabile.
Q6. Dove dovrei posizionare i file unit personalizzati?
A6.
I file unit personalizzati vengono tipicamente posizionati in /etc/systemd/system/. Dopo aver modificato o aggiunto un file unit, esegui sempre il seguente comando:
sudo systemctl daemon-reload
Poi puoi gestire il servizio normalmente usando start o enable.


