systemctl daemon-reload Explained

By
Sara Zivanov
Published:
March 26, 2026
Topics:

Linux systems use a service manager called systemd to start, stop, and restart services. Service behavior is defined in unit files, which contain configuration details for each service.

When you create or modify a unit file, systemd does not automatically detect the changes. The systemctl daemon-reload command reloads systemd’s configuration so it recognizes updated unit files without restarting the system.

This guide will explain what systemctl daemon-reload does, when to use it, how it fits into the systemd workflow, and how it compares to related commands.

systemctl daemon-reload Explained

What Is systemctl daemon-reload?

The systemctl daemon-reload command reloads the systemd manager configuration. It instructs systemd to re-scan unit files and rebuild its internal dependency tree.

Systemd reads unit files from predefined directories, such as /etc/systemd/system/ and /lib/systemd/system/. After the initial load, it keeps this configuration in memory to efficiently manage services.

When you run systemctl daemon-reload, systemd:

  • Reloads all unit files from disk.
  • Rebuilds dependency relationships between units.
  • Updates its internal state without interrupting running services.

This command does not restart services or apply changes to already running units. It only ensures that future operations use the updated configuration.

When to Use daemon-reload

Since systemd does not automatically detect changes to unit files, use the systemctl daemon-reload command to apply changes to these files.

Use the command when you have to:

  • Edit a service unit file. After you modify settings in files like /etc/systemd/system/[service].service, reload systemd to apply the changes.
  • Create a new unit file. When you add a new service, systemd must be reloaded to detect and register it.
  • Delete a unit file. When you remove a unit, the system requires a reload, so systemd stops referencing it.
  • Change dependencies or overrides. Updates to drop-in files or dependency directives require a reload to rebuild relationships.
  • Copy or move unit files. Any manual change to unit file locations requires systemd to re-scan its directories.

systemd Workflow Example

To understand how systemctl daemon-reload fits into the system, note that systemd ignores new or modified unit files until you reload its configuration

The following example shows how systemctl daemon-reload fits into a workflow when you create and manage a custom service.

Note: You need sudo or root permissions to create and manage systemd unit files.

Take the following steps:

1. Create a service unit file using a text editor. In this example, it's Nano.

sudo nano /etc/systemd/system/myapp.service

The command creates a file called myapp.service in the /etc/systemd/system/ directory.

2. Add the following configuration and save and exit the file:

[Unit]
Description=My App Service

[Service]
ExecStart=/usr/bin/sleep 300

[Install]
WantedBy=multi-user.target
Configuration file in Nano

This configuration defines a simple service that runs the sleep command. The service starts a process that waits for 300 seconds and then exits, which is useful for testing systemd behavior.

3. Use systemctl daemon-reload to reload unit files:

sudo systemctl daemon-reload

The command reloads systemd so it detects the new myapp.service file, but displays no output.

4. Use the following command to enable the service at boot:

sudo systemctl enable myapp.service
sudo systemctl enable myapp.service terminal output

The command creates the necessary symlink so the service starts automatically on system boot.

5. Start the service:

sudo systemctl start myapp.service

6. Since the previous command has no output, check the service status with:

sudo systemctl status myapp.service
sudo systemctl status myapp.service terminal output

The output shows the current status and confirms whether the service is running.

systemctl daemon-reexec vs. daemon-reload vs. reload

Systemd provides several commands that sound similar but perform different tasks.

The systemctl daemon-reexec, systemctl daemon-reload, and systemctl reload commands affect different systemd process parts.

It is important to understand the difference because using the wrong command can lead to no effect or unintended behavior. For example, when you reload a service, it does not apply unit file changes, while reloading the systemd manager does not restart or reload running services.

The following table compares these commands and their purpose:

Aspectsystemctl daemon-reloadsystemctl daemon-reexecsystemctl reload [service]
Scopesystemd manager.systemd process.individual service.
FunctionReloads unit files and rebuilds dependency tree.Restarts systemd process while preserving state.Reloads the service configuration using its defined reload command (ExecReload).
Effect on running servicesNo.No.Yes, if supported.
UsageAfter you have created or modified unit files.After updating systemd binaries or core components.Reloads service configuration without a restart.

Conclusion

This tutorial explained what the systemctl daemon-reload command is and when to use it. It also presented an example of systemd workflow and showed the difference between different systemd commands.

Next, learn how to view and edit the systemd logs with journalctl.

Was this article helpful?
YesNo