Ad Space — Top Banner

systemctl not found

Linux Linux

Severity: Minor

What Does This Error Mean?

The 'systemctl: command not found' error means your Linux system is not using systemd as its init system, or the systemd package is not installed. Systemd is the service manager used by most modern Linux distributions. Older distributions and some lightweight Linux systems use different init systems (like SysVinit, OpenRC, or runit) that do not have a systemctl command. The fix depends on which init system your distribution uses.

Affected Models

  • Debian
  • Ubuntu (older versions)
  • Alpine Linux
  • Gentoo
  • Void Linux
  • Slackware
  • Docker containers

Common Causes

  • The Linux distribution uses a different init system such as OpenRC, SysVinit, or runit
  • You are running Linux inside a Docker container where systemd is not available
  • The systemd package was removed or was never installed on the system
  • The PATH environment variable does not include the directory where systemctl is installed
  • You are connected via SSH as a restricted user whose PATH excludes system binaries

How to Fix It

  1. Determine which init system you are using. Type: ps -p 1 -o comm= — if it says 'systemd,' then systemctl should be available. If it says 'init,' 'runit,' or 'openrc,' your system uses a different init.

    PID 1 is always the init process. Its name tells you definitively which init system is running.

  2. If using SysVinit, use service and chkconfig instead. Start a service: sudo service [name] start — check status: sudo service [name] status — enable at boot: sudo chkconfig [name] on

    Debian and older Ubuntu versions use SysVinit. The 'service' command is the equivalent of 'systemctl start/stop/restart.'

  3. If using OpenRC (Alpine Linux, Gentoo), use rc-service. Start: sudo rc-service [name] start — check status: sudo rc-service [name] status — enable at boot: sudo rc-update add [name]

    Alpine Linux (popular for Docker containers) uses OpenRC. The commands are similar to systemctl but with different syntax.

  4. Install systemd if your distribution supports it. On Debian: sudo apt install systemd — then reboot. After reboot, check: ps -p 1 -o comm= to confirm systemd is now running.

    Not all distributions support switching to systemd. Check your distribution's documentation before attempting this.

  5. In a Docker container, use process supervision instead. Docker containers typically manage one process directly. Use: docker exec -it [container] /etc/init.d/[service] start or configure the container's entrypoint properly.

    Docker containers are designed to run one main process. Systemd inside Docker requires special configuration that is often more complexity than it is worth.

When to Call a Professional

This is a standard Linux user issue and never requires professional service. If you need to manage services, the alternatives below work well depending on your distribution.

Frequently Asked Questions

What is systemd and why do most distributions use it?

Systemd is a modern init system and service manager for Linux. It starts all services when the system boots, manages them while running, and handles their shutdown. It replaced older init systems because it starts services in parallel (faster boot), handles dependencies between services, and provides better logging through journalctl. Most major distributions — Ubuntu, Debian, Fedora, RHEL, Arch — now use systemd by default.

I am in a Docker container and need to start a service. How?

In Docker, the recommended approach is to start services directly — not through systemd or init. For example: /usr/sbin/nginx (to start nginx) or /usr/sbin/sshd -D (to start SSH). If you must use systemctl-style management in Docker, consider using Podman with --systemd=true, or use supervisord to manage multiple processes inside the container.

Why do some tutorials use systemctl but it does not work on my system?

Most Linux tutorials today assume systemd, because it is used by the vast majority of modern Linux desktop and server distributions. However, lightweight distributions, older systems, embedded Linux, and Docker containers often use different init systems. Check which init system your distribution uses and look for the equivalent commands for that system.