Updated: 11 October 2026 · Applies to: systemd 252 (RHEL 9.8, Rocky Linux 9.8) and 257 (RHEL 10.2, AlmaLinux 10.2); the same commands work on Debian 13 and Ubuntu 24.04 and 26.04

To list all services on Red Hat Enterprise Linux (RHEL) and its rebuilds AlmaLinux and Rocky Linux, run systemctl list-units --type=service --all. To see only the services that are running now, use systemctl list-units --type=service --state=running, and to see every installed service with its boot setting, use systemctl list-unit-files --type=service. For one service, systemctl status NAME shows whether it runs and why it stopped.

systemctl list-units --type=service --state=running     # running now
systemctl list-units --type=service --all               # every loaded service, any state
systemctl list-unit-files --type=service                # every installed service and its boot setting
systemctl list-unit-files --type=service --state=enabled   # services that start at boot
systemctl --failed                                      # services that failed
systemctl status crond                                  # one service in detail

All output below comes from our tests on AlmaLinux 10.2; Rocky Linux 9.8, RHEL 9.8 and RHEL 10.2 gave the same columns and messages. Run the commands as root or with sudo.

1. List the services that are running

$ systemctl list-units --type=service --state=running
  UNIT                     LOAD   ACTIVE SUB     DESCRIPTION
  crond.service            loaded active running Command Scheduler
  rsyslog.service          loaded active running System Logging Service
  systemd-journald.service loaded active running Journal Service
  systemd-userdbd.service  loaded active running User Database Manager

Legend: LOAD   → Reflects whether the unit definition was properly loaded.
        ACTIVE → The high-level unit activation state, i.e. generalization of SUB.
        SUB    → The low-level unit activation state, values depend on unit type.

4 loaded units listed.

A real server lists more (sshd, your web server, the database). The columns mean:

  • LOAD: loaded (the unit file was read), not-found (something refers to a service that is not installed) or masked (blocked on purpose).
  • ACTIVE: active, inactive or failed.
  • SUB: the detail, such as running, exited (a one-shot job that finished) or dead (stopped).

Without --state, systemctl shows only services that are active, failed or have a job queued. In our test that was 13 services, while --all showed 52, including stopped and not-installed ones.

2. List all services, including stopped ones

$ systemctl list-units --type=service --all
  UNIT                                     LOAD      ACTIVE   SUB     DESCRIPTION
● auditd.service                           not-found inactive dead    auditd.service
● console-getty.service                    masked    inactive dead    console-getty.service
  crond.service                            loaded    active   running Command Scheduler
  dnf-makecache.service                    loaded    inactive dead    dnf makecache
  rsyslog.service                          loaded    active   running System Logging Service
...

(Output shortened.) To filter by state, give one or more states: --state=inactive, --state=failed or --state=running,failed.

3. List installed services and whether they start at boot

list-units shows what systemd has loaded now. list-unit-files shows every service file installed on disk, with its boot setting:

$ systemctl list-unit-files --type=service --state=enabled
UNIT FILE                          STATE   PRESET
crond.service                      enabled enabled
dbus-broker.service                enabled enabled
getty@.service                     enabled enabled
rsyslog.service                    enabled enabled
...
8 unit files listed.

The STATE column is enabled (starts at boot), disabled, static (started only by another unit), masked or alias. PRESET is the distribution's default for that service. Drop --state=enabled to see all of them; the last line gives the count (74 on our minimal test system).

4. Find one service and check its status

If you do not know the exact name, search the installed list:

$ systemctl list-unit-files --type=service | grep -i nginx
nginx.service                          disabled disabled
nginx@.service                         disabled disabled

Then check it:

$ systemctl status crond
● crond.service - Command Scheduler
     Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; preset: enabled)
     Active: active (running) since Fri 2026-10-09 18:22:23 UTC; 14s ago
   Main PID: 151 (crond)
      Tasks: 1 (limit: 1638)
     Memory: 960K (peak: 1.1M)
     CGroup: /system.slice/crond.service
             └─151 /usr/sbin/crond -n

(Output shortened; the last log lines follow.) Loaded says where the unit file is and whether it starts at boot; Active says whether it runs now. A stopped, disabled service looks like this:

$ systemctl status nginx
○ nginx.service - The nginx HTTP and reverse proxy server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; preset: disabled)
     Active: inactive (dead)

For the full log of a service, run journalctl -u nginx -n 50. Service names differ between distributions: Apache is httpd on RHEL and apache2 on Debian and Ubuntu, SSH is sshd on RHEL and ssh on Ubuntu. A wrong name gives:

$ systemctl status apache2
Unit apache2.service could not be found.

5. List failed services

$ systemctl --failed
  UNIT             LOAD   ACTIVE SUB    DESCRIPTION
● demo-app.service loaded failed failed Demo app
...
1 loaded units listed.

Run this after a reboot or an update. Read the cause with systemctl status demo-app and journalctl -u demo-app, fix it, then clear the failed state with systemctl reset-failed demo-app and start it again. For a database that will not start, see MySQL or MariaDB Fails to Start with systemctl: How to Find and Fix the Cause.

6. Output for scripts

systemctl list-units --type=service --state=running --no-legend --plain   # no header, legend or bullets
systemctl list-units --type=service --state=running --output=json         # JSON
systemctl is-active crond      # prints active, inactive or failed
systemctl is-enabled crond     # prints enabled, disabled, static, masked, alias and so on

is-active also sets the exit code (0 when active; it returned 3 for a stopped service), so systemctl is-active --quiet nginx || systemctl restart nginx works in a script. --output=json worked on both systemd 252 (RHEL 9) and 257 (RHEL 10).

The old service and chkconfig commands

On RHEL 6 and CentOS 6 (long out of support), service --status-all and chkconfig --list listed services. On RHEL 9 and 10 they only see old SysV init scripts. On AlmaLinux 10 with the chkconfig and initscripts-service packages installed, service --status-all printed nothing, and chkconfig --list printed only this note:

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.

The minimal RHEL 9 and 10 images did not include either package. Use systemctl; systemd Alternatives to the service, chkconfig and init Commands maps the old commands to the new ones.

Start, stop and enable a service

systemctl start nginx
systemctl stop nginx
systemctl restart nginx
systemctl reload nginx          # re-read the configuration, if the service supports it
systemctl enable --now nginx    # start now and at every boot
systemctl disable --now nginx   # stop now and not at boot

A service that says "Unit is masked" was blocked on purpose; systemctl unmask NAME releases it. To manage services on another server over SSH, see How to Control systemd Services on a Remote Linux Server, and to restart a service automatically after a crash, see Configure systemd and start a service automatically after a crash in Linux?.

Official documentation: systemctl (systemd) and Managing system services with systemctl (Red Hat).

Ucartz services for this topic

Was this answer helpful? 0 Users Found This Useful (0 Votes)