Was meinst du mit aktiviert? Sie meinen Dienste, die ausgeführt werden?
Gen
7
Die Aktivierung eines Dienstes durch @Gen unterscheidet sich erheblich vom Starten. Sehen man systemctl.
Jos
Faszinierend. Die Antwort mit der niedrigsten Bewertung ist die "richtigste" Antwort, auch wenn dies eindeutig nicht die beste Antwort ist. Diese ausgezeichnete Frage (und ihre Antworten) ist ein interessantes Beispiel dafür, wie systemd die langjährigen (und brillanten) Designprinzipien von Unix & Co. verletzt / systemctl kann genau das tun, was er will (die meisten erfahrenen Benutzer werden es nur als vollwertig betrachten). Ich beginne klarer zu sehen, warum Linus Torvalds systemd so vehement kritisch gegenübersteht.
BISI
Antworten:
411
systemctl list-unit-files | grep enabledlistet alle aktivierten auf.
Wenn Sie möchten, welche gerade ausgeführt werden , müssen Sie systemctl | grep running.
Verwenden Sie das, was Sie suchen. Aktiviert bedeutet nicht, dass es ausgeführt wird. Und Laufen heißt nicht, dass es aktiviert ist. Das sind zwei verschiedene Dinge.
Aktiviert bedeutet, dass das System den Dienst beim nächsten Start ausführt. Wenn Sie einen Dienst aktivieren, müssen Sie ihn dennoch manuell starten oder neu starten, und er wird gestartet.
Laufen bedeutet, dass es gerade läuft, aber wenn es nicht aktiviert ist, wird es beim Neustart nicht neu gestartet.
ärgerlich, ein externes Tool (grep) verwenden zu müssen, um diese wichtigen Informationen anzuzeigen. Aber danke, dass du uns den Weg gezeigt hast :)
Felipe Alvarez
34
@FelipeAlvarez Richtig. Aber so funktioniert Linux. Viele kleine Binaries, die gut miteinander funktionieren. systemctl macht was gefragt wird, es listet Dienste auf. In systemctl ist kein Filterbefehl integriert, da grep bereits vorhanden ist und dies mit der Ausgabe eines beliebigen Programms gut tun kann. So war es schon immer :)
Dorian
3
Ich stimme zu und so sollte es sein. Aber systemd versucht bereits so viel zu tun, dass ich mich frage, warum aktivierte Dienste nicht aufgelistet werden können.
Felipe Alvarez
5
systemctl | grep runningliste mir nichts auf! Auch wenn etwas läuft, wird nur aufgeführt, wie für seinen Status:enabled, disabled, masked, static
Das Argument sollte eine durch Kommata getrennte Liste von Einheit sein LOAD, SUBoder ACTIVEStaaten. Zeigen Sie beim Auflisten von Einheiten nur die in den angegebenen Status an. Verwenden Sie --state=faileddiese Option , um nur fehlerhafte Einheiten anzuzeigen.
Erläuterung:
LOAD: Gibt an, ob die Einheitendefinition ordnungsgemäß geladen wurde. ACTIVE: Der Aktivierungsstatus der übergeordneten Einheit, dh die Verallgemeinerung von SUB. SUB: Der Aktivierungsstatus der Einheit auf niedriger Ebene. Die Werte hängen vom Einheitentyp ab.
Sie können dies jedoch auch verwenden, um nur enabledEinheiten anzuzeigen mit:
systemctl list-unit-files --state=enabled
Wenn es sich um eine Einheit handelt enabled, bedeutet dies, dass das System sie beim Start startet. Wenn Sie etwas auf " enabledNicht" startsetzen, müssen Sie dies manuell tun oder das System neu starten, nachdem Sie es auf " Nicht" gesetzt haben enabled.
So aktivieren und starten Sie gleichzeitig:systemctl enable --now ...
Aurélien Ooms
1
--state=enabledhat keine Auswirkung auf Systemd Version 215 (auf Raspbian 8 Jessie), funktioniert aber auf Systemd Version 229 (auf Ubuntu 16.04.03 Xenial).
mpb
@mpb: Aber dennoch funktioniert es einwandfrei mit Version 235 unter Arch Linux.
64
Um alle systemdDienste aufzulisten, die in state=activeund sindsub=running
man systemctl
.Antworten:
systemctl list-unit-files | grep enabled
listet alle aktivierten auf.Wenn Sie möchten, welche gerade ausgeführt werden , müssen Sie
systemctl | grep running
.Verwenden Sie das, was Sie suchen. Aktiviert bedeutet nicht, dass es ausgeführt wird. Und Laufen heißt nicht, dass es aktiviert ist. Das sind zwei verschiedene Dinge.
Aktiviert bedeutet, dass das System den Dienst beim nächsten Start ausführt. Wenn Sie einen Dienst aktivieren, müssen Sie ihn dennoch manuell starten oder neu starten, und er wird gestartet.
Laufen bedeutet, dass es gerade läuft, aber wenn es nicht aktiviert ist, wird es beim Neustart nicht neu gestartet.
quelle
systemctl | grep running
liste mir nichts auf! Auch wenn etwas läuft, wird nur aufgeführt, wie für seinen Status:enabled, disabled, masked, static
systemctl list-unit-files --state=running
man systemctl
Zustände:Erläuterung:
LOAD
: Gibt an, ob die Einheitendefinition ordnungsgemäß geladen wurde.ACTIVE
: Der Aktivierungsstatus der übergeordneten Einheit, dh die Verallgemeinerung vonSUB
.SUB
: Der Aktivierungsstatus der Einheit auf niedriger Ebene. Die Werte hängen vom Einheitentyp ab.Sie können dies jedoch auch verwenden, um nur
enabled
Einheiten anzuzeigen mit:Wenn es sich um eine Einheit handelt
enabled
, bedeutet dies, dass das System sie beim Start startet. Wenn Sie etwas auf "enabled
Nicht"start
setzen, müssen Sie dies manuell tun oder das System neu starten, nachdem Sie es auf " Nicht" gesetzt habenenabled
.quelle
systemctl enable --now ...
--state=enabled
hat keine Auswirkung auf Systemd Version 215 (auf Raspbian 8 Jessie), funktioniert aber auf Systemd Version 229 (auf Ubuntu 16.04.03 Xenial).Um alle
systemd
Dienste aufzulisten, die instate=active
und sindsub=running
Um alle
systemd
Dienste aufzulisten, die instate=active
und unter ausgeführt oder beendet werdenquelle
So zeigen Sie "aktivierte" Dienste an, einschließlich derjenigen, die sich noch unter "upstart / init run" befinden:
So zeigen Sie alle derzeit ausgeführten Dienste an:
quelle
sshd
gegenüberssh
undsyslog
gegenüberrsyslog
.Übersicht aller aktiven und ausgefallenen Dienste:
quelle