The error: systemctl start myservice reports failure, but the default systemctl status output is too short to show the actual cause, and it's not obvious where else to look.
Environment: Any modern Linux distribution using systemd.
Why this happens: systemctl status deliberately truncates output for readability — the real error is almost always present, just cut off or living in a separate log stream than the one being checked first.
The fix:
- Get the full, untruncated log for that specific unit:
journalctl -u myservice -n 50 --no-pager. - If the service uses its own log file rather than journald, check the unit file (
systemctl cat myservice) for aStandardOutput/StandardErrordirective pointing elsewhere. - Check the actual exit code:
systemctl show myservice -p ExecMainStatus— a specific non-zero code narrows things down far faster than reading prose log lines. - Try running the service's actual start command manually, as the same user systemd would use — this often surfaces the real error immediately, since systemd itself sometimes just reports "failed" without forwarding the underlying program's own error text clearly.
One thing worth knowing: running the command manually, outside systemd, resolves more of these than any log-reading technique — it's the fastest path to the real error message when systemd's own reporting is uninformative.