Plainnotes

A restart loop hides the error that caused it

2026-11-02 · 2 min readSystems

systemctl status showed activating (auto-restart) with a changing main PID and a wall of logs. The actual error had been flushed away.

Stop the loop first, then look:

systemctl stop app
journalctl -u app --no-pager -n 100

Without the restarts, the first error is usually the cause: a taken port, a syntax error, a missing file, wrong permissions.

Also check RestartSec. The default is 100 ms; with Restart=always a service that always fails restarts ten times a second until StartLimitBurst trips and systemd gives up. Five seconds or more keeps the logs readable and the CPU idle.