What the message looks like
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.Common causes
- Syntax error in the service configuration, e.g. after editing nginx or Postfix.
- Port already in use (“Address already in use”).
- Missing file: certificate, key, socket directory or include.
- Missing permissions, or SELinux/AppArmor blocks access.
- Broken unit or override, e.g. a wrong path in
ExecStart.
Check
- Show status with the last log lines
systemctl status nginx.service --no-pager -l - Show detailed journal entries for the service
journalctl -xeu nginx.service --no-pager | tail -n 40 - Test the config (nginx example; Apache
apachectl configtest, Postfixpostfix check)nginx -t - Show the unit including all overrides
systemctl cat nginx.service
Fix
- Read the first real error in the journal, not just the systemd summary.
- Fix config errors and always run the service's config test before restarting.
- If the port is busy, find the process with
ss -ltnpand stop or reconfigure it. - After editing units run
systemctl daemon-reload. - Reset the failed state and start again:
systemctl reset-failed nginx && systemctl start nginx.
FAQ
What does “control process” mean?
It is the process systemd runs to start, stop or reload the service – ExecStart, ExecStartPre or ExecReload. Its exit code was not 0.
Why does systemctl status not show the cause?
Status only shows the last lines. journalctl -xeu name.service shows the full history, and the error is often a few lines further up.