Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

If a systemd service fails to start, begin with systemctl status name.service, then check journalctl -u name.service -b for the service’s detailed messages. The first command shows the unit’s state, process result and recent log lines; the second filters journal entries to that unit and the current boot. Use the actual error text to identify the cause before changing the service.

1. Check the unit status and recent failure

Replace name.service in each command with the unit’s actual name. For example, if the unit is nginx.service, use that name in the commands below.

systemctl status name.service

The status output can show whether systemd loaded the unit, whether it is active or failed, where the unit file is located, and the process exit status. It also includes recent messages that may point to the failure. A failed systemctl start command may return only a generic error directing you to the service status or system journal; the application’s useful diagnostic may not appear in the terminal. By default, service stdout and stderr go to the systemd journal. See the systemd project’s Debugging guide.

2. Find the service’s journal messages

Filter the journal to the unit and the current boot:

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
journalctl -u name.service -b

-u filters records by unit, while -b selects the current boot. These options are documented in the systemd 255 journalctl manual. If the failure happened before the most recent reboot, select the previous boot instead:

journalctl -u name.service -b -1

Journal access can depend on your permissions, and whether records from earlier boots are available depends on journal persistence settings. If you cannot see the expected entries, check that you are querying the right unit and boot, and that your account has access to the relevant journal.

3. Read the error before choosing a fix

Separate messages about systemd loading or launching the unit from messages produced by the application. An exit status tells you how the process ended; it does not, by itself, explain why. Look for the message accompanying it and match that to the service’s actual configuration and environment.

  • Command or executable problem: Check whether the command named by ExecStart exists and is executable by the service.
  • Application configuration error: Use the application’s own log message to locate the invalid or unreadable configuration. The systemd debugging example shows an ExecStart exit status alongside the application message “Failed to parse config.”
  • Dependency or permission problem: Look for a missing required resource or access denied message, then verify the relevant dependency and permissions for the service’s execution context.
  • Unit-file problem: If the message concerns a directive or unit loading, inspect the unit file and any relevant overrides rather than changing unrelated application settings.

These are possible failure categories, not diagnoses. The local status and journal messages determine which applies.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

4. Reload systemd after changing a unit file

If you edited the unit file itself, tell systemd to reread unit definitions before trying the service again:

systemctl daemon-reload

Then retry the start and inspect the new result:

systemctl start name.service
systemctl status name.service
journalctl -u name.service -b

A change to an application configuration file does not, by itself, mean the unit definition changed. Apply the narrow fix supported by the error message, then use the status and journal output to verify the outcome. The systemd Debugging guide describes when a daemon reload is needed.

5. Use recovery targets only for system-level trouble

A service that fails while the rest of the system is usable usually calls for unit-level diagnosis, not a recovery boot. If normal boot is impaired, systemd’s debugging guide describes rescue.target and emergency.target. Emergency mode may require remounting the root filesystem read-write before editing files. Use those recovery paths only when the machine’s broader boot problem warrants them; they are not a routine fix for an isolated service failure.

6. Share useful evidence if the failure persists

When asking for help, include the exact unit name, Linux distribution, systemd version if known, and the relevant output from systemctl status and journalctl. Review logs for passwords, tokens, personal data or other sensitive values before posting them publicly. For a suspected systemd or distribution bug, the project advises reporting it to the distribution’s issue tracker first and providing complete logs and system context rather than isolated snippets, as outlined in the systemd Debugging guide.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

System services and user services

The commands above assume a system service. For a user service, use the user manager’s journal mode and select the corresponding unit:

journalctl --user -u name.service -b

The journalctl manual documents --user and --system modes; unit filtering applies within the selected mode. If you are diagnosing a system service, use the system journal rather than the user manager’s journal.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.