Come elencare tutti i servizi abilitati da systemctl?


279

Come posso elencare tutti i enabledservizi da systemctl?

So che eseguire il systemctlcomando da solo elenca tutti i servizi, ma vorrei ottenere solo enabledquelli.


cosa intendi con abilitato? Intendi i servizi in esecuzione?
Gen

7
@Gen abilitare un servizio è abbastanza diverso da avviarlo. Vedere man systemctl.
Jos

Affascinante. La risposta con il punteggio più basso è la risposta più "corretta", anche se chiaramente non è la risposta migliore. Questa eccellente domanda (e le sue risposte) è un interessante esempio di come systemd viola i principi di progettazione di lunga data (e geniali) di Unix & Co. @FelipeAlvarez si lamenta che la risposta più accettata presuppone che systemd segua la filosofia del design unix, ma systemd / systemctl può fare esattamente quello che vuole (gli utenti più esperti considereranno solo quel gonfio completo). Comincio a vedere più chiaramente perché Linus Torvalds è così fortemente critico nei confronti di systemd.
BISI

Risposte:


412

systemctl list-unit-files | grep enabledelencherà tutti quelli abilitati .

Se si desidera quali sono attualmente in esecuzione , è necessario systemctl | grep running.

Usa quello che stai cercando. Abilitato, non significa che sia in esecuzione. E correre non significa che sia abilitato. Sono due cose differenti.

Abilitato significa che il sistema eseguirà il servizio all'avvio successivo. Pertanto, se si abilita un servizio, è comunque necessario avviarlo manualmente o riavviare e si avvierà.

In esecuzione significa che è effettivamente in esecuzione in questo momento, ma se non è abilitato, non si riavvierà al riavvio.


5
fastidioso dover usare uno strumento esterno (grep) per mostrare queste informazioni vitali. Ma grazie per averci mostrato la strada :)
Felipe Alvarez,

34
@FelipeAlvarez Correct. Ma è così che funziona Linux. Molti piccoli binari che funzionano bene l'uno con l'altro. systemctl fa ciò che viene richiesto, elenca i servizi. Non esiste un comando di filtro integrato in systemctl perché grep esiste già e può farlo bene con l'output di qualsiasi programma. È sempre stato così :)
Dorian,

3
Sono d'accordo e così dovrebbe essere. Ma systemd tenta già di fare così tanto che mi chiedo perché non riesca a elencare i servizi abilitati?
Felipe Alvarez,

5
systemctl | grep runningnon elencare nulla per me! Anche se qualcosa è in esecuzione è elencato solo per il suo stato come:enabled, disabled, masked, static
Cirelli94

27
Più semplice:systemctl list-unit-files --state=running
Sarà il

93

man systemctl stati:

--state=

L'argomento dovrebbe essere un elenco separato da virgole di unità LOAD, SUB, o ACTIVEstati. Quando elenchi le unità, mostra solo quelle negli stati specificati. Utilizzare --state=failedper mostrare solo le unità guaste.

Spiegazione:

LOAD: Indica se la definizione dell'unità è stata caricata correttamente.
ACTIVE: Lo stato di attivazione dell'unità di alto livello, ovvero la generalizzazione di SUB.
SUB: Lo stato di attivazione dell'unità di basso livello, i valori dipendono dal tipo di unità.

Puoi anche usare questo per mostrare solo le enabledunità con:

systemctl list-unit-files --state=enabled

Se un'unità enabledindica che il sistema la avvierà all'avvio. Anche se l'impostazione di qualcosa in enabledrealtà non lo fa start, è necessario farlo manualmente o riavviare il sistema dopo averlo impostato su enabled.


5
Per abilitare e iniziare contemporaneamente:systemctl enable --now ...
Aurélien Ooms,

1
--state=enablednon ha alcun effetto su systemd versione 215 (su Raspbian 8 Jessie), ma funziona su systemd versione 229 (su Ubuntu 16.04.03 Xenial).
mpb,

@mpb: Ma funziona perfettamente anche nella versione 235 su Arch Linux.

64

Per elencare tutti i systemdservizi che sono in state=activeesub=running

systemctl list-units --type=service --state=running

Per elencare tutti i systemdserice che sono presenti state=activee secondari in esecuzione o in uscita

systemctl list-units --type=service --state=active

12

Per vedere i servizi "abilitati" inclusi quelli che sono ancora in fase di avvio / avvio:

systemctl list-unit-files --type service --state enabled,generated

Per vedere tutti i servizi attualmente in esecuzione in esecuzione:

systemctl list-units --type service --state running

Purtroppo i nomi dei servizi possono essere diversi nelle due liste - ad esempio sshdcontro sshe syslogcontro rsyslog.
OrangeDog,

L'unica risposta giusta "non grep". Anche se non sono sicuro del motivo per cui viene menzionato upstart ...
rogerdpack

2

Panoramica anche di tutti i servizi attivi e falliti:

systemctl list-units --type service --state running,failed
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.