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.

0 characters, 0 lines

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.