LinuxСредняя

systemctl command not found: причины и решение в Linux

Статья объясняет, что делать при ошибке 'systemctl command not found' в Linux. Вы узнаете, как определить ини-систему, использовать альтернативные команды и при необходимости установить systemd.

Обновлено 15 февраля 2026 г.
5-10 мин
Низкая
FixPedia Team
Применимо к:Linux (любой дистрибутив)WSL1Docker-контейнерыМинимальные установки

Что означает ошибка systemctl command not found

Ошибка systemctl command not found возникает, когда вы пытаетесь выполнить команду systemctl в терминале Linux, но оболочка не может найти её в путях, указанных в переменной PATH. Это означает, что либо команда systemctl не установлена в системе, либо система использует другую ини-систему (init system), не связанную с systemd.

Полный текст ошибки обычно выглядит так:

bash: systemctl: command not found

Такая ошибка часто встречается в дистрибутивах, которые по умолчанию не используют systemd (например, Alpine Linux, Devuan), в минимальных установках, в контейнерах Docker, а также в Windows Subsystem for Linux (WSL) версии 1.

Причины возникновения

  1. Systemd не установлен: Ваш дистрибутив использует альтернативную ини-систему (SysVinit, OpenRC, runit). В этом случае команда systemctl отсутствует.
  2. Минимальная установка: Даже в дистрибутивах, обычно использующих systemd (Ubuntu, CentOS), при выборе минимального образа пакет systemd может не быть включён.
  3. WSL1: Первая версия Windows Subsystem for Linux не включает systemd. Вместо этого используется собственная ини-система, совместимая с SysVinit.
  4. Контейнеры: Docker-образы и другие контейнеры часто не запускают systemd, чтобы уменьшить размер и ускорить старт.
  5. Изменённая переменная PATH: Редкий случай, когда systemd установлен, но каталог с systemctl (обычно /usr/bin) не входит в PATH.

Способы решения

Способ 1: Проверьте, установлен ли systemd

Сначала определите, установлен ли пакет systemd в вашей системе.

Для Debian/Ubuntu и производных:

dpkg -l systemd 2>/dev/null | grep -i systemd

Если пакет не установлен, вывод будет пустым.

Для RHEL/CentOS/Fedora:

rpm -qa | grep -i systemd

Для Arch Linux:

pacman -Qs systemd

Если systemd не найден, переходите к способу 3.

Способ 2: Определите активную ини-систему

Даже если systemd установлен, система может использовать другую ини-систему. Выполните:

ps -p 1 -o comm=
  • Если вывод systemd — systemd активен, и проблема может быть в PATH (см. способ 4).
  • Если вывод init — используется SysVinit.
  • Если вывод runit — используется runit.
  • Если вывод busybox — часто в Alpine Linux (OpenRC).

Способ 3: Используйте альтернативные команды управления службами

В зависимости от вашей ини-системы:

Для SysVinit (традиционные скрипты в /etc/init.d/):

sudo service <имя_службы> <действие>
# Пример: sudo service nginx start

Или напрямую:

sudo /etc/init.d/<имя_службы> <действие>

Для OpenRC (Alpine, Gentoo):

sudo rc-service <имя_службы> <действие>
# Пример: sudo rc-service docker start

Для runit:

sudo sv <действие> <каталог_службы>
# Пример: sudo sv start /etc/sv/nginx

Для WSL1: используйте service, как в SysVinit. Для автозапуска служб при старте WSL добавьте команды в ~/.bashrc или используйте /etc/rc.local.

Способ 4: Добавьте путь к systemctl в PATH (если systemd установлен, но не найден)

Если systemd установлен, но systemctl не находится в PATH, найдите его расположение:

sudo find /usr -name systemctl 2>/dev/null

Обычно systemctl находится в /usr/bin/systemctl. Если вы нашли его в другом каталоге (например, /usr/local/bin), добавьте этот каталог в PATH:

export PATH=$PATH:/путь/к/каталогу

Чтобы сделать изменение постоянным, добавьте строку в ~/.bashrc или ~/.profile и выполните source ~/.bashrc.

Способ 5: Установите systemd (если он не установлен, но нужен)

Внимание: Установка systemd в дистрибутив, который по умолчанию не использует systemd, может нарушить работу системы. Делайте это только если уверены в совместимости.

Для Debian/Ubuntu:

sudo apt update
sudo apt install systemd

Для RHEL/CentOS 7 и ниже:

sudo yum install systemd

Для RHEL/CentOS 8+ / Fedora:

sudo dnf install systemd

Для Arch Linux:

sudo pacman -S systemd

После установки перезагрузите систему и проверьте systemctl list-units.

Способ 6: Для WSL1: перейдите на WSL2

WSL2 (начиная с Windows 11 версии 22H2) поддерживает systemd. Если у вас Windows 11:

  1. Обновите WSL:
    wsl --update
    
  2. Установите WSL2 (если ещё не установлен):
    wsl --set-default-version 2
    
  3. Установите дистрибутив с поддержкой systemd (например, Ubuntu 22.04+).

Если у вас Windows 10, WSL2 не поддерживает systemd. В этом случае используйте альтернативные команды (способ 3) или полноценную виртуальную машину.

Профилактика

  • Перед выбором дистрибутива убедитесь, какая ини-система используется по умолчанию.
  • В дистрибутивах с выбором ини-системы (Devuan) будьте внимательны при установке.
  • При использовании Docker-контейнеров помните, что systemd обычно не запускается. Для управления службами внутри контейнера используйте команды, предоставляемые базовым образом (например, service), или управляйте процессами напрямую.
  • В WSL1 планируйте переход на WSL2, если требуется systemd.
  • Регулярно обновляйте систему, чтобы избежать конфликтов пакетов.

Часто задаваемые вопросы

Почему в WSL1 нет systemctl?
Можно ли установить systemd в Alpine Linux?
Как проверить, какая ини-система активна?
Что делать, если systemctl есть, но требует sudo?

Полезное

Проверьте наличие systemctl в системе
Определите активную ини-систему
Используйте команду service для SysVinit
Примените rc-service для OpenRC
Для WSL1: настройте службы через service
Если нужно systemd: установите пакет