How does systemd manage services?
systemd is the init system on most modern distributions. It starts services and manages dependencies, logging, and lifecycle.
- Units describe resources: .service, .socket, .timer, .target, and .mount.
- Unit files live in /etc/systemd/system for custom units, /usr/lib/systemd/system for packaged ones, or ~/.config/systemd/user for user units.
- systemctl controls units: start, stop, restart, reload, enable, disable, and status.
- Dependencies use After, Wants, and Requires. Targets group units for boot states.
- journald collects logs, and journalctl reads them.
[Unit]
Description=My API
After=network.target
[Service]
ExecStart=/usr/bin/myapi --port 8080
Restart=on-failure
User=app
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now myapi
systemctl status myapi
Run daemon-reload after editing unit files, and enable for boot persistence.