systemctl is the control panel for Linux services — the units systemd runs: web servers, databases, timers, and your own daemons. A handful of verbs covers most days: status, start and stop, enable and disable.

The everyday verbs #

Inspect, start, and stop a service
$ systemctl status nginx
$ sudo systemctl start nginx
$ sudo systemctl stop nginx

status is the read command: whether the service is active, how long it has been up, its PID, and — most useful — the last few log lines inline, which usually explain a crash before you even open the logs.

Restart and reload
$ sudo systemctl restart nginx
$ sudo systemctl reload nginx

reload re-reads configuration without dropping connections where the service supports it; restart does the full stop-and-start.

Boot behaviour: enable vs start #

VerbEffect
start / stopRight now; forgotten at reboot
enable / disableAt every boot; no immediate effect
restartFull bounce
maskRefuse to start, even by accident

A fresh install is usually the pair: sudo systemctl enable --now nginx — enabled for future boots and started immediately, in one flag.

Finding the problem #

What failed since boot?
$ systemctl --failed
0 loaded units listed

When a unit shows as failed, status names the reason and points at the logs. The full history lives in journalctl:

Follow a service's logs live
$ journalctl -u nginx -f

-u filters to one unit, -f follows like tail -f.

Units beyond services #

.service is the common unit, but systemctl list-units --type=timer shows scheduled jobs and --type=socket the socket-activated ones — the same verbs apply to all of them.

More operations notes — and the rest of the terminal notes — are in the journal.