Browser-based diagnostic tool
Why Did My systemd Service Fail?
Why did my systemd service fail? Paste the full systemctl status or journal output to turn systemd's result and exit status into a focused set of checks.
Analysis runs entirely in this browser. Your pasted output is not uploaded or stored. Remove secrets before sharing the result anywhere else.
How the systemd failure analyzer works
systemd reports failures at several layers. It may fail before your program starts, while applying the configured identity or working directory, after the program exits, or after a restart policy triggers too many attempts. This analyzer looks for exact systemd result names and the surrounding messages so it can separate those stages.
Collect useful output
Start with full, untruncated status output and the journal for the current boot. The last line often says only that the unit failed. The decisive message is usually the first error before it.
systemctl status your-service.service --full --no-pager
journalctl -u your-service.service -b --no-pager -n 150
systemctl cat your-service.service
The final command matters because drop-in files can override the unit you think you are editing. systemctl cat shows the unit
and its loaded overrides together.
Failures before the application starts
Status values such as 203/EXEC, 200/CHDIR, 217/USER, and 216/GROUP are generated while
systemd prepares the process. Application logs may be empty because the application never ran. Check the path, executable format, shebang,
directory traversal permissions, configured identity, mount state, and security-policy denials before debugging application code.
Restart limits are usually secondary
Start request repeated too quickly means the service failed several times within the start-limit window. Increasing the limit
can hide the symptom, but it does not correct the first exit. Read earlier journal entries, fix that failure, then use
systemctl reset-failed before retrying.
Keep the diagnosis scoped
Avoid broad permission changes such as making a service executable world-writable or disabling SELinux. Verify the exact process identity and the exact denied operation, then make the smallest change that allows the intended service behavior.