In Linux, un servizio è un programma che viene eseguito in background. I servizi possono essere avviati su richiesta o all'avvio.
Se stai utilizzando Linux come sistema operativo principale o piattaforma di sviluppo, 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 filesystem, registrare eventi, impostare il nome host e altre attività di sistema.
Questo articolo spiega come elencare i servizi in Linux.
Elenco dei servizi Linux #
Systemd utilizza il concetto di unità, che possono essere servizi, socket, punti di montaggio, dispositivi, ecc. Le unità sono definite utilizzando file di testo in ini
formato. Questi file includono informazioni sull'unità, le sue impostazioni e i comandi da eseguire. Le estensioni del nome file definiscono il tipo di file dell'unità. Ad esempio, i file dell'unità di servizio del sistema hanno un .service
estensione.
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, digita:
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 in memoria.ACTIVE
- Lo stato di attivazione del file dell'unità di alto livello, che può essere attivo, ricaricato, inattivo, non riuscito, attivazione, disattivazione. È una generalizzazione delSUB
colonna.SUB
- Lo stato di attivazione del file dell'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 unitario.
Per impostazione predefinita, il comando elenca solo le unità attive caricate. Per vedere anche le unità caricate ma inattive, passa il --all
opzione:
sudo systemctl list-units --type service --all
Se vuoi vedere tutti i file di unità installati, non solo quelli caricati, usa:
sudo systemctl list-unit-files
Visualizzazione dello stato del servizio #
Per controllare lo stato di un servizio, usa systemctl status
comando:
sudo systemctl status <service_name>.service
Dove <service_name>
è il nome dell'unità di servizio che si desidera controllare. Ad esempio, per determinare lo stato corrente del servizio nginx da eseguire:
sudo systemctl status nginx.service
Puoi 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 Wed 2020-12-23 19:13:50 UTC; 5s ago
Docs: man:nginx(8)
Process: 3061052 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 3061063 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 3061064 (nginx)
Tasks: 2 (limit: 470)
Memory: 6.0M
CGroup: /system.slice/nginx.service
├─3061064 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─3061065 nginx: worker process
Dec 23 19:13:50 linuxize.dev systemd[1]: Starting A high performance web server and a reverse proxy server...
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 all'avvio all'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 per quanto tempo è in esecuzione il 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 relativi Gruppi di Controllo.
Se vuoi solo controllare lo stato del servizio, usa il systemctl is-active
comando. 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 pari a 0, che può essere utile quando si utilizza il comando all'interno degli script della shell.
Conclusione #
Ti abbiamo mostrato come usare il systemctl
comando per elencare i servizi Linux e verificarne lo stato.