When trying to learn a little bit about a systemd unit, one of the most common (if not the most common?) commands you might run is
systemctl status. There is a lot of really valuable information in the status output. This blog post will disect each part of the output and explain what it means.
For the purpose of this blog post, I’ll use the status of the famous
Let’s takes each part of the status output and break it down.
The first line includes the name - description for the service. The description can be verified as
systemctl status -p Description ssh.service. It is also used in journal events for different state changes.
This is the indication of the loaded state of the unit. This just means that it was loaded in memory (and the source unit file). This is the “normal” status for a unit, but could also be “error” if there was a problem loading the unit file. “bad-setting” if there is an error in the unit file syntax. “masked” would indicate that the unit is masked.
This tells whether the unit is enabled or disabled. An enabled unit will start at boot.
vendor preset tells you if the unit was enabled on installation. If the unit is disabled and you want it to run at boot, you can run
systemctl enable <unit>. Likewise, if you want to stop the unit from running at boot, you can run
systemctl disable <unit>.
These are the activation state indicators. The small dot is green for a unit that is active or activating. If the dot is red then it indicates a failed unit. If the dot is white then this is for an inactive unit. For more information on how activation state affects service units, see my blog post that includes an explanation of a few activation states.
This is the datetime (and the duration) since the state change. This is a good indication of how long the unit has been in this current state.
This is the process ID of the of the process behind the unit. You can verify this with
1 2 3 $ ps 1237 PID TTY STAT TIME COMMAND 1237 ? Ss 0:00 /usr/sbin/sshd -D
This information can also be found in the cgroup data (explained next).
The control group (cgroup) that this unit’s process belongs to. A cgroup is a subset of processes that can have their resources limited and handled together. In this case,
sshd is the only process in this cgroup, but in the case where it was being shared by other processes their pids would be listed here as well.
Another really cool feature of
systemctl status is a quick summary of journal logged events for the unit. While this is sometimes a good quick view at what’s happening with the unit, it’s more thorough to read the journal entries from
1 $ journalctl -u ssh.service
-b 0 to see logged journal entries only from the current boot.
Hopefully this blog post has explained the output of one of the most common commands run with