Come elencare i servizi Linux con Systemctl

23 dic 2020 3 min di lettura
Come elencare i servizi Linux con Systemctl
Indice dei contenuti

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 colonna SUB.
  • 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.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.