Elenco dei servizi systemctl spiegato: Come visualizzare, gestire e risolvere i problemi dei servizi Linux

目次

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:

FieldDescription
UNITService name (e.g., ssh.service)
LOADWhether the unit file is loaded
ACTIVEService state (e.g., active, inactive, failed)
SUBMore detailed status (e.g., running, exited, dead)
DESCRIPTIONService 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.

STATEDescription
enabledAutomatically starts at boot
disabledDoes not start automatically
staticCannot be enabled or disabled manually
maskedExplicitly 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-units visualizza le unità attualmente caricate, cioè i servizi in esecuzione o che sono stati usati di recente.
  • list-unit-files visualizza 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.

侍エンジニア塾