}

systemctl Cheatsheet 2026: Complete Command Reference

systemctl Cheatsheet 2026: Complete Command Reference

Last updated: March 2026

Quick reference for systemctl, the command-line interface to systemd. All commands assume a Linux system running systemd (Ubuntu 20.04+, Debian 10+, RHEL 8+, Fedora, Arch, etc.). Commands that modify system state require sudo.


Service Control

Command Description
systemctl start unit Start a unit immediately
systemctl stop unit Stop a running unit
systemctl restart unit Stop then start a unit
systemctl try-restart unit Restart only if currently active
systemctl reload unit Reload configuration without stopping (unit must support it)
systemctl reload-or-restart unit Reload if supported, otherwise restart
systemctl status unit Show status, recent logs, and PID
systemctl kill unit Send a signal to all processes of a unit
systemctl kill -s SIGKILL unit Force-kill all processes

Examples

sudo systemctl start nginx
sudo systemctl stop postgresql
sudo systemctl restart myapp
sudo systemctl reload nginx          # reload nginx config in-place
sudo systemctl status sshd

Enable / Disable (Boot Persistence)

Command Description
systemctl enable unit Enable unit to start on boot
systemctl enable --now unit Enable and start immediately
systemctl disable unit Disable unit from starting on boot
systemctl disable --now unit Disable and stop immediately
systemctl is-enabled unit Check if enabled (enabled/disabled/static/masked)
systemctl mask unit Prevent unit from being started (ever, by anything)
systemctl unmask unit Remove mask
systemctl preset unit Apply the vendor/distribution default enable state

Examples

sudo systemctl enable --now nginx
sudo systemctl disable --now apache2
systemctl is-enabled sshd           # → enabled
sudo systemctl mask bluetooth       # block bluetooth from starting
sudo systemctl unmask bluetooth

System State

Command Description
systemctl poweroff Shut down and power off
systemctl reboot Reboot the system
systemctl halt Stop the OS without powering off
systemctl suspend Suspend to RAM
systemctl hibernate Suspend to disk
systemctl hybrid-sleep Suspend to RAM and disk
systemctl rescue Switch to rescue (single-user) mode
systemctl emergency Switch to emergency mode
systemctl default Return to default target
systemctl isolate multi-user.target Switch to multi-user target
systemctl isolate graphical.target Switch to graphical target
systemctl get-default Show current default target
systemctl set-default multi-user.target Set default target

Examples

sudo systemctl reboot
sudo systemctl suspend
sudo systemctl get-default                          # → graphical.target
sudo systemctl set-default multi-user.target        # server mode, no GUI

List Units

Command Description
systemctl list-units List all active units
systemctl list-units --all List all units including inactive
systemctl list-units --type=service List only service units
systemctl list-units --type=socket List only socket units
systemctl list-units --state=failed List failed units
systemctl list-unit-files List all installed unit files and their state
systemctl list-unit-files --type=service List service unit files
systemctl list-timers List all timers and next trigger time
systemctl list-timers --all Include inactive timers
systemctl list-sockets List socket units and their addresses
systemctl list-dependencies unit Show dependency tree for a unit
systemctl list-dependencies --reverse unit Show what depends on this unit

Examples

systemctl list-units --state=failed            # see what broke
systemctl list-unit-files --state=enabled      # see what starts on boot
systemctl list-timers                          # see scheduled tasks
systemctl list-dependencies nginx              # what nginx needs

Inspect Units

Command Description
systemctl status unit Status, PID, recent log lines
systemctl cat unit Show unit file content as loaded
systemctl show unit Show all properties (key=value)
systemctl show -p Restart unit Show a specific property
systemctl edit unit Edit unit file (creates override.conf)
systemctl edit --full unit Edit a full copy of the unit file
systemd-analyze verify unit.service Check unit file syntax

Examples

systemctl cat sshd.service                    # see the full unit file
systemctl show nginx -p ActiveState           # → ActiveState=active
sudo systemctl edit myapp                     # add overrides without editing original

Logs with journalctl

Command Description
journalctl -u unit All logs for a unit
journalctl -u unit -f Follow (live tail)
journalctl -u unit -n 50 Last 50 lines
journalctl -u unit -b Logs since current boot
journalctl -u unit -b -1 Logs from previous boot
journalctl -u unit --since "1 hour ago" Logs from last hour
journalctl -u unit --since "2026-03-26 10:00" Logs since specific time
journalctl -u unit --until "2026-03-26 12:00" Logs until specific time
journalctl -u unit -p err Errors and above only
journalctl -u unit -p warning..err Priority range
journalctl -u unit -o json JSON output format
journalctl -u unit --no-pager Print without pager
journalctl -k Kernel messages (dmesg equivalent)
journalctl -b All logs since current boot
journalctl --disk-usage Show total log disk usage
journalctl --vacuum-size=500M Trim logs to 500 MB
journalctl --vacuum-time=30d Remove logs older than 30 days

Examples

journalctl -u nginx -f                        # live follow nginx logs
journalctl -u myapp -n 100 --no-pager        # last 100 lines, no pager
journalctl -u postgresql -p err --since "2 hours ago"
journalctl --disk-usage                       # e.g. "Archived and active journals take up 1.2G"
sudo journalctl --vacuum-size=500M            # reduce to 500 MB

For detailed journalctl usage, see the journalctl filtering guide.


Boot Analysis

Command Description
systemd-analyze Total boot time
systemd-analyze blame Time spent by each unit, sorted descending
systemd-analyze critical-chain Show critical path (slowest chain)
systemd-analyze critical-chain unit Critical chain for specific unit
systemd-analyze plot > boot.svg Generate SVG boot timeline
systemd-analyze verify unit.service Syntax check a unit file
systemd-analyze security unit.service Security exposure score

Examples

systemd-analyze
# Startup finished in 2.345s (kernel) + 8.123s (userspace) = 10.468s

systemd-analyze blame | head -10    # top 10 slowest services

systemd-analyze critical-chain
# The time when unit became active or started is printed after the "@" character.
# @8.123s
# └─multi-user.target @8.123s
#   └─myapp.service @6.000s +2.123s

systemd-analyze security myapp.service
# → UNSAFE 9.6

Common Patterns

Service fails to start — quick diagnosis

# 1. Check status
systemctl status myapp

# 2. Check recent logs
journalctl -u myapp -n 50 --no-pager

# 3. Check syntax
systemd-analyze verify /etc/systemd/system/myapp.service

# 4. After fixing the unit file, reload and retry
sudo systemctl daemon-reload
sudo systemctl start myapp

Apply unit file changes

sudo systemctl daemon-reload          # required after any file edit
sudo systemctl restart myapp          # apply to running service

One-liner: enable, start, and check

sudo systemctl enable --now myapp && systemctl status myapp

Find all services that failed across all boots

journalctl -p err -b --no-pager | grep "Failed"

Related Articles