Come appare il messaggio
myapp.service: Start request repeated too quickly.
myapp.service: Failed with result 'start-limit-hit'.
Failed to start myapp.service - My application.Cause frequenti
- Il programma termina subito dopo l'avvio: configurazione errata, file mancante, problema di permessi o una porta già in uso.
Restart=alwayscon unRestartSecmolto breve riavvia troppo spesso un servizio rotto.- Una dipendenza (database, mount, rete) non è ancora pronta.
- Più di 5 avvii in 10 secondi, i valori predefiniti di
StartLimitBursteStartLimitIntervalSec. - Un aggiornamento difettoso ha cambiato un binario o una configurazione.
Verifica
- Stato e ultime righe dell'unità
systemctl status myapp --no-pager - Perché è andata in crash? Leggi il journal dell'unità
- I limiti che valgono per questa unità
systemctl show myapp -p Restart -p RestartUSec -p StartLimitBurst -p StartLimitIntervalUSec
Soluzione
- Trova prima nel journal l'errore vero e correggilo (configurazione, permessi, porta, dipendenza).
- Cancella lo stato di errore:
systemctl reset-failed myapp, poisystemctl start myapp. - Dai respiro al servizio:
RestartSec=5in[Service]e, se serve,StartLimitIntervalSec=60eStartLimitBurst=5in[Unit]. - Aggiungi
After=eRequires=per le dipendenze che devono essere pronte prima. - Dopo aver modificato il file dell'unità esegui
systemctl daemon-reload.
Domande frequenti
Posso semplicemente alzare il limite di avvii?
Si può, ma nasconde solo un ciclo di crash. Prima capisci perché il processo termina. Alza il limite solo per un servizio che deve riavviarsi spesso.
Come vedo tutte le unità fallite?
Con systemctl --failed.