Aș dori să configurez un serviciu systemd astfel încât să repornească rapid la început, dar să încetinească după o perioadă scurtă de timp. Motivul este că un serviciu ar putea eșua temporar și poate reveni rapid pentru cea mai mare disponibilitate. Dar dacă problema persistă mai mult timp, aceasta va genera o mulțime de intrări de jurnal. În acest caz, intervalul de repornire ar trebui să fie mai lung pentru a nu provoca o astfel de încărcare, dar totuși revine dacă problema se rezolvă la un moment dat.
Acesta este fișierul meu de serviciu actual:
[Unitate]
StartLimitIntervalSec=120
StartLimitBurst=4
[Serviciu]
ExecStart=/root/test.sh
Restart=intotdeauna
RestartSec=10
Scriptul de testare se efectuează în bucle atâta timp cât există /root/test.run, apoi iese cu un cod de eroare. Pot cauza eșuarea serviciului ștergând acel fișier.
Iată ce am observat:
- Pornind serviciul fără fișierul de rulare, eșuează imediat. Apoi reîncearcă de 4 ori și apoi eșuează pentru totdeauna. Nu va încerca niciodată să înceapă din nou.
- Pornind serviciul cu fișierul de rulare, acesta rulează la început. După ștergerea fișierului, serviciul eșuează. Apoi repornește ca mai sus: de 4 ori și apoi niciodată.
În mod clar, aceasta nu este o limitare a ratei, este doar o limitare.
Ce trebuie să schimb pentru a obține o limitare a ratei? După ce 4 reporniri în 120 de secunde au eșuat, serviciul ar trebui să încerce în continuare să pornească la o rată mai mică.
Rulează pe cel mai recent sistem de operare Raspberry Pi, dar acest lucru ar trebui să se aplice oricărui sistem de operare Linux cu systemd.