There are a lot more than what you mentioned that systemctl
is capable of:
- systemd is backwards compatible with SysV.
- loads services parallel at startup
- it's provides on-demand activation of a service
- it's dependency based
- and a lot more I guess...
systemd
works with units, there are different type of units: targets, services, sockets, etc. targets are same concept as runlevels, they are a bunch of units together.
You can use systemctl
to set or get the default system target.
systemctl get-default
You can go into other targets:
systemctl isolate multiuser.target
Other targets are: multiuser, graphical, recue, emergency, reboot, poweroff.
As you said, you can use systemctl
to manage services, some of the other commands related to service management which I'm aware of are:
# Restarts a service only if it is running.
systemctl try-restart name.service
# Reloads configuration if it's possible.
systemctl reload name.service
# try to reload but if it's not possible restarts the service
systemctl reload-or-restart name.service
You can use it to find out about a service status:
systemctl status name.service
systemctl is-active name.service # running
systemctl is-enabled name.service # will be activated when booting
systemctl is-failed name.service # failed to load
You can mask or unmask a service:
systemctl mask name.service
systemctl unmask name.service
Wen you mask a service it will be linked to /dev/null
, so manually or automatically other services can't active/enable it. (you should unmask it first).
Another usage of systemctl is to list units:
systemctl list-units
Which list all kind of units, loaded and active.
List service units:
systemctl list-units --type=service
Or to list all available units not just loaded and activated ones:
systemctl list-unit-files
You can create aliases or even control remote machines
systemctl --host [email protected] list-units
At the other hand service
does what it have to do, managing services and having nothing to do with other peoples business ;)