Come appare il messaggio
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xeu nginx.service" for details.Cause frequenti
- Errore di sintassi nella configurazione del servizio, ad es. dopo una modifica a nginx o Postfix.
- Porta già occupata (“Address already in use”).
- File mancante: certificato, chiave, directory del socket o include.
- Permessi mancanti, oppure SELinux/AppArmor blocca l'accesso.
- Unit o override difettosi, ad es. percorso sbagliato in
ExecStart.
Verifica
- Mostra lo stato con le ultime righe di log
systemctl status nginx.service --no-pager -l - Mostra le voci dettagliate del journal del servizio
journalctl -xeu nginx.service --no-pager | tail -n 40 - Testa la config (esempio nginx; Apache
apachectl configtest, Postfixpostfix check)nginx -t - Mostra la unit con tutti gli override
systemctl cat nginx.service
Soluzione
- Leggi il primo vero errore nel journal, non solo il riepilogo di systemd.
- Correggi gli errori di config ed esegui sempre il test di config del servizio prima del riavvio.
- Se la porta è occupata trova il processo con
ss -ltnpe fermalo o riconfiguralo. - Dopo aver modificato le unit esegui
systemctl daemon-reload. - Azzera lo stato di errore e riavvia:
systemctl reset-failed nginx && systemctl start nginx.
Domande frequenti
Cosa significa “control process”?
È il processo che systemd esegue per avviare, fermare o ricaricare il servizio: ExecStart, ExecStartPre o ExecReload. Il suo exit code non era 0.
Perché systemctl status non mostra la causa?
Status mostra solo le ultime righe. journalctl -xeu nome.service mostra tutta la storia e spesso l'errore è qualche riga più in alto.