Knowing whether a service is enabled shows whether systemd is configured to pull that unit into the boot process or another activation path automatically. That matters for schedulers, monitoring agents, daemons, and other background services that must come back after a restart without manual intervention.

The systemctl is-enabled subcommand reports a unit file's installation state rather than its live runtime state. The result is derived from the symlinks created by systemctl enable and from the unit's [Install] section, so the answer may be enabled, disabled, static, masked, or another supported state instead of a simple yes-or-no flag.

Examples below use cron.service because it is a common service name on Debian and Ubuntu systems. Other distributions may use a different unit name, such as crond.service on many Red Hat family systems. A result of enabled does not guarantee that the service is running right now, while static means the unit has no install rules of its own rather than a broken configuration.

Steps to check whether a service is enabled using systemctl:

  1. Open a terminal session on the system that runs the service.
  2. If the exact unit name is unclear, search the installed service unit files first.
    $ systemctl list-unit-files --type=service | grep -E 'cron|crond'

    Replace the pattern with the real service name when needed, for example sshd, nginx, docker, or postgresql.

  3. Check the unit's enablement state.
    $ systemctl is-enabled cron.service
    enabled

    Use the full unit name when possible so the result is unambiguous.

  4. Treat enabled or enabled-runtime as confirmation that systemd has install links for the unit.

    enabled persists through reboot because the symlinks live under /etc/systemd/system/. enabled-runtime is stored under /run/systemd/system/ and disappears after reboot.

  5. Read other returned states before assuming the service is misconfigured.
    $ systemctl is-enabled systemd-journald.service
    static

    disabled means the unit has an [Install] section but is not currently enabled. static means the unit has no install rules of its own and is usually started as a dependency, socket, path, timer, or target requirement. masked means the unit is hard-disabled so start attempts fail.

    Do not reduce the result to exit status alone when the distinction matters. Upstream systemctl treats several states as success, including enabled and static, so the printed state is the reliable answer when checking whether a service is truly boot-enabled.

  6. Check the runtime state separately when the service must already be running.
    $ systemctl is-active cron.service

    is-enabled answers whether the unit is configured to start automatically. is-active answers whether it is running right now, and the two states are intentionally independent.