Units and state
Read unit state
Separate load, active, substate, and enablement before deciding what a service needs.
8 minute lesson
systemctl status combines several different facts in one screen. Read each fact instead of reducing the output to running or broken.
systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
Active: active (running) since Mon 2026-08-03 09:14:02 UTC; 3h 12min ago
Main PID: 812 (nginx)
Tasks: 3 (limit: 4573)
Memory: 8.4M
CGroup: /system.slice/nginx.service
├─812 "nginx: master process /usr/sbin/nginx"
├─813 "nginx: worker process"
└─814 "nginx: worker process"
The four facts
Loaded tells you whether systemd found and parsed the unit file, and shows the path it used. If this says not-found or bad-setting, nothing else matters yet.
Active is the broad runtime state: active, inactive, failed, activating.
The substate in parentheses adds detail. running means a live process. A Type=oneshot unit can be active (exited): it ran, finished with success, and stayed logically active. That is normal, not a bug.
Enablement (enabled on the Loaded line) describes boot-time symlinks. It does not prove the unit is running now.
You can query the same facts as plain properties, which is handy in scripts:
systemctl show --property=LoadState,ActiveState,SubState,UnitFileState nginx
LoadState=loaded
ActiveState=active
SubState=running
UnitFileState=enabled
The classic confusion
People mix up enablement and activity constantly. A service can be enabled but failed because it crashed an hour ago. It can be disabled but active because someone started it by hand. After the next reboot that hand-started service will be gone, and you will wonder why.
So check both axes. systemctl is-active nginx answers “is it running now”. systemctl is-enabled nginx answers “will it start at boot”. Both commands exit non-zero on a negative answer, so they work in shell conditions.
Inspect one installed service with the systemctl show command above. Explain each of the four values in one sentence. If you can do that, you know what the service needs next.
Lesson completed