VMHeaven

Troubleshooting

systemctl: command not found — you are not on systemd

This error means the system does not use systemd — a container, Alpine, or SysVinit. Use rc-service, service, or run the process directly instead.

Updated 08 Aug 2026~5 min read

systemctl: command not found almost always means you are on a system that does not use systemd — a container, Alpine Linux, or an older init like SysVinit or OpenRC. The fix is not to install systemctl; it is to use the init system the machine actually has.

First, find out what init you have

identify the init system
cat /proc/1/comm      # prints: systemd, init, busybox, ...
ps -p 1 -o comm=
  • systemd — systemctl should exist; skip to the PATH check below.
  • busybox or openrc — you are on Alpine; use rc-service.
  • init — SysVinit; use service and update-rc.d.

Alpine (OpenRC)

OpenRC equivalents
rc-service nginx start
rc-service nginx status
rc-update add nginx default    # enable at boot

SysVinit

service command
service nginx start
service nginx status
update-rc.d nginx enable

In a Docker container

Containers have no init by design — PID 1 is your application, not systemd. Do not try to run systemctl inside one. Start processes directly, or run one service per container as intended:

run the process directly
# instead of: systemctl start nginx
nginx -g 'daemon off;'

If you do have systemd but the command is missing

On a systemd machine the binary lives in /usr/bin or /bin. A stripped PATH (common under su without -) hides it:

call by full path
ls -l /usr/bin/systemctl /bin/systemctl 2>/dev/null
/usr/bin/systemctl status
su -    # the dash loads a full login PATH

A full KVM VPS runs a normal systemd userland, so service management works exactly as the documentation expects. Our Standard KVM line ships stock systemd images of Debian, Ubuntu, Rocky and more.

Frequently asked

How do I install systemctl?

You generally do not. It ships with systemd; if the system uses another init (OpenRC on Alpine, SysVinit), use that init's tools rather than forcing systemd in.

Why is systemctl missing inside my Docker container?

Containers have no init by design — PID 1 is your application. Start processes directly (e.g. 'nginx -g "daemon off;"') instead of using systemctl.

What replaces systemctl on Alpine?

OpenRC: use 'rc-service <name> start' and 'rc-update add <name> default' to enable at boot.

More in Troubleshooting

See all