How to list all enabled services from systemctl?
systemctl list-unit-files | grep enabled
will list all enabled ones.
If you want which ones are currently running, you need systemctl | grep running
.
Use the one you're looking for. Enabled, doesn't mean it's running. And running doesn't mean it's enabled. They are two different things.
Enabled means the system will run the service on the next boot. So if you enable a service, you still need to manually start it, or reboot and it will start.
Running means it's actually running right now, but if it's not enabled, it won't restart when you reboot.
man systemctl
states:
--state=
The argument should be a comma-separated list of unit
LOAD
,SUB
, orACTIVE
states. When listing units, show only those in the specified states. Use--state=failed
to show only failed units.
Explanation:
LOAD
: Reflects whether the unit definition was properly loaded.
ACTIVE
: The high-level unit activation state, i.e. generalization of SUB
.
SUB
: The low-level unit activation state, values depend on unit type.
Though you can also use this to only show enabled
units with:
systemctl list-unit-files --state=enabled
If a unit is enabled
that means that the system will start it on startup. Though setting something to enabled
doesn't actually also start
it so you will need to do that manually, or reboot the system after setting it to enabled
.
To list all the systemd
service which are in state=active
and sub=running
systemctl list-units --type=service --state=running
To list all the systemd
serice which are in state=active
and sub either running or exited
systemctl list-units --type=service --state=active