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.

Category
Troubleshooting · Servers & Linux
Time
15–30 min
Last reviewed
What you'll need
  • SSH or console access with sudo

Step-by-step diagnostic

Step 1 of 5
Show full guide

Steps

Goal: Check status, read logs, fix config and permissions, and resolve dependencies.

  • Run systemctl status servicename and journalctl -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 servicename shows active (running).
  • No errors in journalctl.
  • The service responds as expected.

Escalation ladder

Work from the device outward. Stop when the problem is fixed.

  1. Status and logs systemctl status; journalctl -u servicename.
  2. Unit file Fix ExecStart, User, WorkingDirectory; daemon-reload.
  3. Permissions and ports chown/chmod; check port conflicts with ss/lsof.
  4. 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.

Run `journalctl -u servicename -n 50`. Permission denied: fix chown/chmod. No such file: fix ExecStart path. Address in use: check port with ss -tlnp. Other: check unit file and dependencies.

You can change your answer later.

Check status

Run `systemctl status servicename`. Note the Active line and error. Run `systemctl cat servicename` to see unit. Fix ExecStart, User, WorkingDirectory. daemon-reload, restart.

Apply fix

Permission: chown/chmod for service user. Path: fix ExecStart in unit. Port: stop conflicting service or change port. Dependencies: start required units. systemctl daemon-reload; systemctl restart servicename.

You can change your answer later.

Done

Service is active. Monitor with systemctl status.

Test manually or escalate

Run the binary manually as the service user. See the error. Fix config or environment. If managed by config management, 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.

Continue to