Unit Types#
systemd manages the entire system through “units,” each representing a resource or service. The most common types:
- service: Daemons and long-running processes (nginx, postgresql, your application).
- timer: Scheduled execution, replacing cron. More flexible and better integrated with logging.
- socket: Network sockets that trigger service activation on connection. Enables lazy startup and zero-downtime restarts.
- target: Groups of units that represent system states (multi-user.target, graphical.target). Analogous to SysV runlevels.
- mount: Filesystem mount points managed by systemd.
- path: Watches filesystem paths and activates units when changes occur.
Unit files live in three locations, in order of precedence: /etc/systemd/system/ (local admin overrides), /run/systemd/system/ (runtime, non-persistent), and /usr/lib/systemd/system/ (package-installed defaults). Always put custom units in /etc/systemd/system/.