systemd Cheat Sheet
A searchable reference of common systemd commands for services, logs, and unit files.
| Command | What it does |
|---|---|
systemctl start <service> | Start a service now without enabling it at boot. |
systemctl stop <service> | Stop a running service immediately. |
systemctl restart <service> | Stop and start a service to apply changes. |
systemctl reload <service> | Ask a running service to reread its config without a full restart. |
systemctl reload-or-restart <service> | Reload the service if it supports it, otherwise restart it. |
systemctl status <service> | Show whether a service is running along with its recent log lines. |
systemctl enable <service> | Set a service to start automatically at boot. |
systemctl disable <service> | Stop a service from starting automatically at boot. |
systemctl enable --now <service> | Enable a service at boot and start it right away. |
systemctl disable --now <service> | Disable a service at boot and stop it right away. |
systemctl is-active <service> | Print active or inactive for the current run state. |
systemctl is-enabled <service> | Print whether the service is set to start at boot. |
systemctl mask <service> | Block a service so it cannot be started, even as a dependency. |
systemctl unmask <service> | Remove a mask so the service can be started again. |
systemctl kill <service> | Send a signal such as SIGTERM to the processes of a service. |
systemctl list-units | List the units systemd currently has loaded in memory. |
systemctl list-units --type=service | List only the loaded service units and their state. |
systemctl list-units --all | Include inactive and dead units in the listing. |
systemctl list-unit-files | List installed unit files and whether each is enabled. |
systemctl --failed | List the units that failed to start. |
systemctl list-dependencies <service> | Show the tree of units a unit pulls in. |
systemctl cat <service> | Print the full unit file plus any drop-in overrides. |
systemctl show <service> | Print every property of a unit as key and value pairs. |
systemctl is-system-running | Report the overall system state, such as running or degraded. |
systemctl daemon-reload | Reload unit files from disk after you edit or add one. |
journalctl -u <service> | Show all journal entries for one service unit. |
journalctl -f | Follow the journal live and print new entries as they arrive. |
journalctl -u <service> -f | Follow the live log for a single service. |
journalctl -b | Show entries from the current boot only. |
journalctl -b -1 | Show entries from the previous boot. |
journalctl --since today | Show entries logged since the start of today. |
journalctl -p err | Show only entries at error priority or worse. |
journalctl -n 50 | Show the most recent 50 journal entries. |
journalctl -k | Show kernel messages only, like dmesg. |
journalctl --disk-usage | Report how much disk space the journal is using. |
journalctl --vacuum-time=7d | Delete archived journal data older than the given time. |
/etc/systemd/system/ | Location for admin unit files and overrides, which take priority. |
/usr/lib/systemd/system/ | Location where installed packages place their default unit files. |
[Unit] | Section for the description and ordering directives such as After. |
[Service] | Section that defines how the service runs, such as ExecStart. |
[Install] | Section read by enable and disable, holding directives such as WantedBy. |
ExecStart= | The command systemd runs to start the service. |
Type=simple | Startup type where the ExecStart process is the main process. |
Restart=on-failure | Restart the service automatically if it exits with a failure. |
After=network.target | Order this unit to start after the listed units. |
WantedBy=multi-user.target | Target that enable hooks the unit into for normal boot. |
systemctl edit <service> | Create a drop-in override for a unit and reload it. |
systemctl reboot | Restart the machine. |
systemctl poweroff | Power the machine off. |
systemctl suspend | Suspend the machine to RAM. |
systemctl hibernate | Save state to disk and power the machine down. |
systemctl get-default | Show the default target the system boots into. |
systemctl set-default multi-user.target | Set the default boot target, for example text mode. |
systemctl list-timers | List active timers and when each one next fires. |
systemd-analyze blame | List units ordered by how long each took to start. |
systemd-analyze time | Print total boot time split across kernel and userspace. |
No commands match your search.
Runs entirely in your browser. Nothing you type is sent anywhere; open DevTools and watch the Network tab to verify zero requests.
What this tool does
This is a searchable quick reference for the systemd commands you use most, from starting and enabling services to reading logs with journalctl and writing unit files. Each row pairs the exact command or directive with a plain-English note on what it does. Type in the filter box to search across both columns, or tap a category button to focus on one area. The whole list is built into the page, so it works offline and sends nothing anywhere.
How to use it
Start typing in the Filter box. Entering enable
surfaces the boot commands; entering journalctl or logs
shows the log queries; entering restart finds the service controls. The
category buttons (Services, Inspect, Logs, Unit files, System)
narrow the table to one area and combine with the text filter, so you can pick Logs
and type since to zero in on time filters. Clear the box to see the full
sheet again.
Common use cases
- Checking whether a service is running with
systemctl status nginx. - Enabling a service so it survives a reboot with
systemctl enable --now sshd. - Reading the last errors from one unit with
journalctl -u nginx -p err. - Applying an edited unit file with
systemctl daemon-reloadthensystemctl restart. - Finding which units slow down boot with
systemd-analyze blame.
Common pitfalls
- Forgetting daemon-reload. After editing a unit file, systemd keeps
the old copy in memory until you run
systemctl daemon-reload, so your change appears to do nothing. - Confusing enable and start.
systemctl startruns a service now but does not survive a reboot;systemctl enablesets it to start at boot but does not run it now. Useenable --nowfor both. - Editing vendor unit files in place. Files under
/usr/lib/systemd/system/get overwritten on package updates. Usesystemctl editto add a drop-in override under/etc/systemd/system/instead. - Masking when you meant disable.
systemctl maskmakes a unit impossible to start, even as a dependency, which can break other services;systemctl disableonly stops it starting at boot.
Frequently asked questions
- What is systemd?
- systemd is the init system and service manager used by most modern Linux distributions. It is the first process to start at boot, running as PID 1, and it brings up and supervises the rest of the system through units. You interact with it mainly through systemctl to control services and targets, and journalctl to read the logs it collects.
- What is the difference between systemctl enable and systemctl start?
- systemctl start runs a service right now but does nothing about future boots, so the service stops being active after a reboot unless something starts it again. systemctl enable sets the service to start automatically at boot but does not start it in the current session. To do both at once, run systemctl enable --now.
- How do I view the logs for a service?
- Use journalctl with the -u flag and the unit name, for example journalctl -u nginx. Add -f to follow new lines live, -b to limit output to the current boot, or -p err to show only errors. systemctl status also prints the most recent log lines for a unit as a quick summary.
- What does systemctl daemon-reload do?
- systemd loads unit files into memory and does not watch them for changes, so after you edit or add a unit file you run systemctl daemon-reload to reread them from disk. This updates the in-memory configuration but does not restart running services, so you usually follow it with systemctl restart on the affected unit.
- Where do systemd unit files live?
- Packages install their default unit files under /usr/lib/systemd/system/, and on some systems /lib/systemd/system/. Files you create or override as an administrator go under /etc/systemd/system/, which takes priority over the vendor copies. Drop-in override directories created by systemctl edit also live under /etc/systemd/system/ and layer on top of the base unit.
- Does this cheat sheet send my searches anywhere?
- No. The entire command list is baked into the page and all filtering happens in your browser with JavaScript, so nothing you type is sent to any server. Open your browser DevTools and watch the Network tab while you search to confirm there are zero requests.
Cite this tool
For academic, journalistic, or technical references. Pick a format:
Citations use 2026 as the publication year. Access date is left as a fillable placeholder where the citation style expects one.