Introduzione
In Linux, un servizio è un programma che viene eseguito in background. I servizi possono essere avviati su richiesta o al momento dell'avvio.
Se utilizzi Linux come sistema operativo o piattaforma di sviluppo principale, ti occuperai di diversi servizi come server web, ssh o cron. Sapere come elencare i servizi in esecuzione o controllare lo stato del servizio è importante durante il debug dei problemi di sistema.
La maggior parte delle recenti distribuzioni Linux utilizza systemd come sistema di inizializzazione predefinito e gestore dei servizi.
Systemd è una suite di strumenti per la gestione dei sistemi Linux. Viene utilizzato per avviare la macchina, gestire i servizi, montare automaticamente i file system, registrare gli eventi, impostare il nome host e altre attività di sistema.
Questo articolo spiega come elencare i servizi su Linux.
Elencare i servizi Linux
Systemd utilizza il concetto di unità, che possono essere servizi, socket, punti di montaggio, dispositivi, ecc. Le unità vengono definite utilizzando file di testo in formato ini
. Questi file includono informazioni sull'unità, le sue impostazioni e comandi da eseguire. Le estensioni del nome file definiscono il tipo di file unità. Ad esempio, i file delle unità di servizio del sistema hanno un'estensione .service
.
systemctl
è un'utilità della riga di comando utilizzata per controllare systemd e gestire i servizi. Fa parte dell'ecosistema systemd ed è disponibile per impostazione predefinita su tutti i sistemi.
Per ottenere un elenco di tutte le unità di servizio caricate, digitare:
sudo systemctl list-units --type service
UNIT LOAD ACTIVE SUB DESCRIPTION
cron.service loaded active running Regular background program processing daemon
...
Ogni riga di output contiene le seguenti colonne da sinistra a destra:
UNIT
- Il nome dell'unità di servizio.LOAD
- Informazioni sul fatto che il file dell'unità sia stato caricato nella memoria.ACTIVE
- Lo stato di attivazione del file di unità di alto livello, che può essere attivo, in fase di ricaricamento, inattivo, non riuscito, in attivazione, in disattivazione. È una generalizzazione della colonnaSUB
.SUB
- Lo stato di attivazione del file unit di basso livello. Il valore di questo campo dipende dal tipo di unità. Ad esempio, un'unità di tipo servizio può trovarsi in uno dei seguenti stati, morto, terminato, non riuscito, inattivo o in esecuzione.DESCRIPTION
- Breve descrizione del file unit.
Per impostazione predefinita, il comando elenca solo le unità attive caricate. Per vedere le unità caricate ma anche inattive, passa l'opzione --all
:
sudo systemctl list-units --type service --all
Se vuoi vedere tutti i file unit installati, non solo quelli caricati, usa:
sudo systemctl list-unit-files
Visualizzare lo stato del servizio
Per controllare lo stato di un servizio, usa il comando systemctl status
:
sudo systemctl status <service_name>.service
<service_name>
è il nome dell'unità di servizio che desideri controllare. Ad esempio, per determinare lo stato corrente del servizio nginx da eseguire:
sudo systemctl status nginx.service
È possibile omettere il suffisso ".service". systemctl status nginx
è uguale a systemctl status nginx.service
.
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-12-11 15:37:34 CET; 1 weeks 5 days ago
Docs: man:nginx(8)
Main PID: 13172 (nginx)
Tasks: 3 (limit: 4915)
CGroup: /system.slice/nginx.service
├─13172 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─15416 nginx: worker process
└─15417 nginx: worker process
Il comando stamperà le seguenti informazioni:
Loaded
- Se l'unità di servizio è stata caricata e il percorso completo del file dell'unità. Mostra anche se l'unità è abilitata per l'avvio al momento dell'avvio.Active
- Se il servizio è attivo e in esecuzione. Se il tuo terminale supporta i colori e il servizio è attivo e in esecuzione, il punto (●
) e la parte "attiva (in esecuzione)" verranno stampate in verde. La riga mostra anche la durata del servizio.Docs
- La documentazione del servizio.Process
- Informazioni sui processi di servizio.Main PID
- Il servizio PID.Tasks
- Il numero di attività contabilizzate per l'unità e il limite di attività.Memory
- Informazioni sulla memoria utilizzata.CGroup
- Informazioni sui gruppi di controllo correlati.
Se vuoi solo controllare lo stato del servizio, usa il comando systemctl is-active
. Ad esempio, per verificare che il servizio nginx sia in esecuzione, eseguire:
systemctl is-active nginx.service
active
Il comando ti mostrerà lo stato del servizio. Se il servizio è attivo, il comando restituisce uno stato di uscita 0
, che può essere utile quando si utilizza il comando all'interno degli script della shell.
Conclusione
Ti abbiamo mostrato come utilizzare il comando systemctl
per elencare i servizi Linux e controllarne lo stato.