Come elencare i servizi Linux con systemctl
Pubblicato: 2022-10-23
Il tuo computer Linux si basa su molte attività in background chiamate servizi o demoni. Nelle distribuzioni basate su systemd hai comandi integrati che ti consentono di vedere quali servizi sono in esecuzione, disabilitati o non riusciti.
Servizi e Demoni
I servizi e i daemon sono attività in background che vengono eseguite senza un'interfaccia utente, non richiedono l'interazione umana e di solito vengono avviate all'avvio del computer.
Un tempo, i servizi venivano lanciati da init
, che è stato il primo vero processo ad essere lanciato. I dettagli dei servizi sono stati conservati in una raccolta di script situati nella directory “/etc/init/d”. Sulle distribuzioni non di sistema è ancora così.
Nel mondo systemd, i servizi vengono lanciati da systemd
, che ora è il primo processo ad essere lanciato. I dettagli dei servizi sono memorizzati in file unit situati nella directory “/usr/lib/systemd”.
Secondo la sua pagina man, systemd
è un gestore di sistemi e servizi. È possibile utilizzare il comando systemctl
per ispezionare e controllare diversi aspetti del sistema systemd, inclusi servizi e daemon.
Poiché qui stiamo esaminando i comandi specifici di systemd, la prima cosa che devi sapere è se stai eseguendo una distribuzione basata su systemd o meno.
CORRELATI: Perché il systemd di Linux è ancora divisivo dopo tutti questi anni
init o basato su systemd?
La stragrande maggioranza delle distribuzioni Linux utilizza systemd, inclusi Arch, Red Hat e Debian, e molte delle distribuzioni ne derivano. Ciò include la famiglia di distribuzioni Ubuntu, Fedora e i suoi spin e Manjaro e le altre distribuzioni basate su Arch.
Tuttavia, ci sono fork o versioni di alcune di queste distribuzioni che sono state create appositamente per evitare di dover utilizzare systemd. Non solo, ma ci sono altri sistemi init che qualcuno potrebbe scegliere di usare al posto di quello che è stato fornito di default nella loro distribuzione, come runit o s6-linux-init.
Se devi amministrare un computer Linux che non hai impostato tu stesso, l'unico modo per essere certi se sta usando systemd o meno, è controllare. Possiamo farlo osservando l'albero dei processi con il comando pstree
. Abbiamo solo bisogno di vedere la cima dell'albero - dopotutto stiamo cercando il primo processo che viene eseguito - quindi invieremo l'output tramite il comando head
e chiederemo le prime cinque voci.
pstree | testa -5
Possiamo vedere che systemd
è il primo processo che viene eseguito dopo l'avvio, quindi siamo sicuramente su un'installazione di Linux basata su systemd.
CORRELATI: Come gestire i processi dal terminale Linux: 10 comandi che devi conoscere
Utilizzo di systemctl per elencare i servizi
Il comando per elencare servizi e demoni è systemctl
. Possiamo perfezionare il comando systemctl
con le opzioni di type
e state
. Chiediamo a systemctl
di segnalare i servizi che sono in esecuzione.
systemctl --type=servizio --state=in esecuzione
Viene generata una tabella di informazioni. Se è troppo largo o lungo per la finestra del tuo terminale, viene visualizzato nel visualizzatore di file predefinito, che probabilmente sarà less
.
Per vedere l'estremità destra della tabella, premere il tasto Freccia destra. Per tornare alla visualizzazione normale, premere il tasto Freccia sinistra.
Premi il tasto Q per uscire da less. Le colonne visualizzate sono:
- Unit : il nome del servizio o del demone. La colonna è intitolata "Unità" perché tutto ciò che è in questa colonna è stato lanciato utilizzando il sistema di informazioni
systemd
in un file di unità. - Load : lo stato di caricamento del servizio o del demone. Può essere caricato, non trovato, impostato male, errore o mascherato.
- Attivo : lo stato generale in cui si trova il servizio o il demone. Può essere attivo, in ricarica, inattivo, non riuscito, in attivazione o disattivazione.
- SUB : Il sottostato del servizio o del demone. Può essere morto, terminato, non riuscito, inattivo o in esecuzione.
- Descrizione : Una breve descrizione dell'unità.
Possiamo reindirizzare l'output di systemctl
tramite grep
se vogliamo concentrarci su un singolo servizio. Questo comando isola la voce della tabella per il servizio ssh
.
systemctl --type=servizio --state=in esecuzione | grep ssh

Finora abbiamo filtrato il contenuto della tabella fornendo l'opzione state=running
. Possiamo invece utilizzare uno qualsiasi dei possibili valori del sottostato: dead, exited, failed, inactive o running.
Cerchiamo i servizi falliti:
systemctl --type=servizio --state=non riuscito
È possibile utilizzare combinazioni di sottostati. Digitali come un elenco separato da virgole. Assicurati di non includere spazi bianchi tra le opzioni. Si noti che questo trova i servizi che corrispondono a entrambi gli stati.
systemctl --type=servizio --state=non riuscito, uscito
Premendo il tasto Freccia destra per guardare le colonne fuori schermo mostra che abbiamo una combinazione di servizi usciti e non riusciti nell'elenco.
Per impostazione predefinita, systemctl
elenca i processi, servizi e daemon, che sono stati avviati da systemd
perché systemd
ha trovato un file di unità che conteneva un file di unità valido per loro. Ecco perché il termine abbreviato per tutti questi processi è "unità".
Esiste un'opzione per richiedere esplicitamente a systemctl
di elencare le unità, ma poiché è l'azione predefinita, non viene utilizzata spesso.
Questi comandi producono gli stessi risultati.
sudo systemctl list-units --type=service --state=running
sudo systemctl --type=service --state=in esecuzione
Utilizzo di systemctl per elencare i file di unità
Possiamo espandere l'ambito del comando systemctl
includendo l'opzione list-unit-files
. Questo non riporta solo i servizi e i demoni che sono stati lanciati, ma elenca anche tutti i file dell'unità installati sul tuo computer.
systemctl list-unit-files --state=enabled
Viene visualizzata una tabella colorata.
La rimozione dell'opzione di state
rimuove il filtro. L'output conterrà tutti i file di unità installati, indipendentemente dal loro stato.
systemctl list-unit-files
L'output conterrà molte più voci rispetto ai risultati dei comandi precedenti.
Sul nostro computer di prova l'elenco dei risultati è quasi quattro volte più lungo dell'output dei nostri comandi precedenti.
Se si desidera utilizzare l'opzione state
, è possibile utilizzare più stati con essa, come abbiamo visto in precedenza. Si applicano le stesse regole. Fornisci le opzioni come valori separati da virgole e non includere spazi bianchi.
Questo comando elencherà tutti i file dell'unità che sono disabilitati o non sono stati avviati.
systemctl list-unit-files --state=enabled,falled
Viene visualizzato un numero ridotto di risultati, filtrati in base alle selezioni effettuate con l'opzione stato.
Guardando un servizio in dettaglio
Se qualcosa su un servizio o un demone suscita il tuo interesse e merita un'immersione più approfondita, puoi esaminarlo in dettaglio usando l'opzione di stato systemctl.
Diamo un'occhiata al demone SSH, sshd. Tutto quello che dobbiamo fare è usare l'opzione di stato e il nome del servizio o del demone.
stato systemctl sshd
Questo display compatto mostra:
- Il nome del servizio insieme a una breve descrizione. Un punto codificato a colori mostra se è in esecuzione o meno. Il verde significa che è in esecuzione, il rosso significa che non lo è.
- Cosa è stato caricato, incluso il percorso del file dell'unità.
- Da quanto tempo è in esecuzione.
- Dove la documentazione si trova nel manuale
man
. - L'ID processo dell'istanza in esecuzione.
- Quante istanze simultanee di questo servizio sono in esecuzione. Di solito questo sarà uno.
- Quanta memoria viene consumata.
- Quanto tempo CPU è stato consumato.
- Il gruppo di controllo a cui appartiene il servizio.
Vengono visualizzate anche le voci rilevanti del registro di sistema. Si tratta in genere di eventi come l'avvio del servizio. Questi possono essere informativi se stai esaminando un servizio o un demone che non è stato avviato correttamente.
CORRELATI: Come utilizzare journalctl per leggere i log di sistema Linux
I sistemi autonomi
Servizi e demoni forniscono molte delle azioni automatiche del tuo sistema operativo, quindi sono vitali. Ciò significa che anche la loro salute è vitale.
Ottenere una vista sui tuoi servizi, demoni e file di unità è facile e informativo. È anche un prezioso passaggio per la risoluzione dei problemi se un servizio o un demone si rifiutano di avviarsi.
CORRELATI: Come risolvere l'errore "Troppi file aperti" su Linux