Fix a Linux server that will not start service
We'll check status with systemctl, read logs with journalctl, fix config and permissions, and resolve dependencies—or tell you when to escalate.
What you'll need
- SSH or console access with sudo
Step-by-step diagnostic
Quick triage — pick your path
Get started
Choose the option that matches what you see. You can jump straight to that section.
Show full guide
Steps
Goal: Check status, read logs, fix config and permissions, and resolve dependencies.
- Run
systemctl status servicenameandjournalctl -u servicename -n 50. - Good: You see the error. Proceed to Fix unit file or Fix permissions.
- Bad: Run systemctl cat to see the unit file.
Check status and logs
Goal: See the current state and error.
- systemctl status shows state. journalctl shows the error (permission, path, port, config).
- Good: Error identified. Proceed to Fix unit file.
- Bad: Test the executable manually.
Fix unit file
Goal: Correct ExecStart, User, WorkingDirectory, and dependencies.
- systemctl edit servicename to override. Fix ExecStart path, User, WorkingDirectory. systemctl daemon-reload; systemctl restart servicename.
- Good: Service starts. You are done.
- Bad: Check permissions and port conflicts.
When to escalate
Escalate if:
- The service is managed by config management.
- The fix requires application-level changes.
- You cannot safely modify the unit file.
Provide systemctl status, journalctl output, and unit file.
Verification
systemctl status servicenameshows active (running).- No errors in journalctl.
- The service responds as expected.
Escalation ladder
Work from the device outward. Stop when the problem is fixed.
- Status and logs systemctl status; journalctl -u servicename.
- Unit file Fix ExecStart, User, WorkingDirectory; daemon-reload.
- Permissions and ports chown/chmod; check port conflicts with ss/lsof.
- Escalate Provide status, journalctl, unit file.
What to capture if you need help
Before calling support or posting for help, have these ready. It speeds everything up.
- systemctl status output
- journalctl -u servicename output
- Unit file (systemctl cat)
- Steps already tried
What does journalctl show for the service?
Read the last 50 lines of service logs.
You can change your answer later.
Check status
Apply fix
You can change your answer later.
Done
Test manually or escalate
Reviewed by Blackbox Atlas
Frequently asked questions
- Why would a systemd service not start?
- Config error in the unit file, missing dependency, permission denied, port already in use, or the executable path is wrong. Check systemctl status and journalctl first.
- Can I fix a service that will not start myself?
- Yes. Read journalctl for the error, fix the unit file (path, user, dependencies), check permissions and ports. Reload with systemctl daemon-reload.
- When should I escalate service start failures?
- If the service is managed by config management, the fix requires application-level changes, or you cannot safely modify the unit file.
Rate this guide
Was this helpful?
Thanks for your feedback.