Скидка 50% все планы, ограниченное время. Начиная от $2.48/mo
Осталось 7 мин
Серверы и ОС

Как исправить ошибку systemctl: команда не найдена на Ubuntu

Ник Сильвер By Ник Сильвер 7 мин чтения Обновлено 20 февраля 2025
как исправить ошибку systemctl: command not found

Один из самых мощных и удобных инструментов для пользователей Linux, особенно современных дистрибутивов вроде Ubuntu, — команда systemctl. Эта утилита командной строки используется для взаимодействия с systemd — системным менеджером служб и процессов.

С помощью этой команды можно управлять системными службами: просматривать их статус, запускать и останавливать, а также включать и отключать автозапуск при старте системы. Удобно, не правда ли? Но если команда systemctl не найдена или не распознаётся, вы столкнётесь с «sudo:systemctl: command not found» ошибка.

Давайте разберёмся, что означает ошибка «systemctl: command not found», почему она возникает и как её устранить.

Что означает ошибка «systemctl: команда не найдена»?

Если говорить прямо, ошибка «systemctl: command not found» означает, что утилита командной строки systemctl недоступна в текущей среде. Причин может быть несколько, и все они сводятся к одному из двух: либо вы работаете не в системной среде, либо пакет systemd просто не установлен.

По всей видимости, пакет systemd не установлен, либо ваш дистрибутив или версия Linux не использует systemd — вместо него используется более старая система управления службами, например init.d. Ещё одна возможная причина: переменная окружения PATH не содержит директорию, в которой находится systemctl, из-за чего оболочка не может его найти.

Теперь, когда вы представляете, что может вызывать ошибку «systemctl: command not found», разберёмся, как определить причину и устранить её.

Устранение ошибки systemctl: Command Not Found

В следующих шагах мы проверим, установлен ли в системе systemd и доступна ли команда systemctl, а также убедимся, что путь к systemctl прописан корректно. После диагностики перейдём к исправлению ошибки.

1. Проверка: использует ли система systemd

Поскольку Ubuntu systemctl работает только при наличии пакета systemd, сначала проверим, должна ли ваша система использовать systemd. Выполните следующую команду:

ps -p 1 -o comm=

Или вы можете проверить версию systemd с помощью следующей команды:

systemd --version

Если вывод — systemd, значит systemd является вашей системой инициализации и Ubuntu systemctl должен быть установлен. Если же вывод — init или другой менеджер процессов, значит система использует альтернативную систему инициализации, и systemctl не будет работать без миграции на systemd.

Если вы видите устаревшие системы инициализации, например Upstart или SysVinit, и хотите перейти на systemd для использования systemctl, выполните следующие шаги:

1. Установите systemctl, установив systemd с помощью следующей команды:

sudo apt install systemd-sysv

2. Перезагрузите систему, выполнив эту команду:

sudo reboot

3. Убедитесь, что система теперь использует systemd:

ps -p 1 -o comm=

Вывод должен быть systemd.

2. Проверка корректности установки systemd

В норме, когда systemd установлен и работает как система инициализации, команда systemctl должна функционировать без проблем. Если это не так, значит пакет systemd либо отсутствует, либо установлен некорректно.

Обратите внимание: если вы используете минимальный образ Ubuntu, например контейнер Docker или облачный инстанс, systemd может не быть установлен по умолчанию. Чтобы установить systemctl через установку systemd, выполните следующие команды:

sudo apt update
sudo apt install systemd

После установки проверьте, доступна ли команда systemctl.

3. Проверка PATH для systemctl

Одна из распространённых причин ошибки «systemctl not found» — systemctl установлен, но отсутствует в переменной PATH. Чтобы проверить, есть ли бинарные файлы systemd в стандартных директориях, таких как /bin, /usr/bin или /usr/local/bin, выполните следующую команду:

which systemctl

Если systemctl найден в одной из директорий, перечисленных в PATH, вывод будет примерно таким:

/usr/bin/systemctl

Если systemctl не найден ни в одной из директорий PATH, команда which ничего не вернёт.

Однако systemctl может не работать, даже если он найден в ваших директориях. Причина в том, что systemctl может находиться в директории, которая не включена в PATH. В этом случае нужно проверить, является ли директория с systemctl частью PATH вашей системы, выполнив следующую команду:

echo $PATH

Вывод должен выглядеть примерно так:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Теперь нужно проверить, включена ли директория, в которой находится systemctl (полученная с помощью команды which), в список директорий из вывода команды echo $PATH.

Если директория systemctl отсутствует в выводе echo $PATH, её нужно добавить в переменную PATH. Для этого выполните следующую команду:

Для Пользователи Bash, откройте файл ~/.bashrc в текстовом редакторе:

nano ~/.bashrc

Добавьте следующую строку в конец файла:

export PATH=$PATH:/usr/bin

/usr/bin, типичный каталог, где в этом примере находится systemctl.

Теперь сохраните и закройте файл, нажав CTRL + X, затем Y для подтверждения и Enter для сохранения.

Для Пользователи Zsh, откройте файл ~/.zshrc в текстовом редакторе:

nano ~/.zshrc

Добавьте следующую строку в конец файла:

export PATH=$PATH:/usr/bin

/usr/bin, типичный каталог, где в этом примере находится systemctl.

Теперь сохраните и закройте файл, нажав CTRL + X, затем Y для подтверждения и Enter для сохранения.

После выполнения всех шагов выше выполните команду echo $PATH, чтобы убедиться, что каталог systemctl добавлен в PATH. После этого вы сможете запускать systemctl без ошибки «systemctl: command not found».

4. Переустановка systemd

Если предыдущие способы не помогли и ошибка command not found по-прежнему появляется, попробуйте полностью переустановить systemd. Для этого выполните следующие команды:

sudo apt purge systemd
sudo apt install systemd

Затем перезагрузите систему командой:

sudo reboot

Проверьте, работает ли systemctl.

5. Проверка корректности настройки systemd

Иногда причиной ошибки «systemctl: command not found» может быть некорректная установка systemd. Чтобы исправить это, достаточно выполнить следующую команду:

sudo dpkg-reconfigure systemd

6. Устаревшая подсистема Windows для Linux (WSL)

Если вы запускаете Ubuntu в WSL (Windows подсистема для Linux) учтите, что старые версии WSL, в частности WSL 1, не поддерживают systemctl нативно. Ни один из перечисленных выше способов не поможет запустить systemctl в таком окружении.

Чтобы использовать функции systemctl, нужно перейти на WSL 2: в нём поддержка systemd значительно лучше. Если вы не уверены, используете ли вы WSL, проверьте это следующей командой:

uname -a

Если в выводе упоминается WSL, именно это и является причиной ошибки «systemctl: command not found».

7. Использование sudo service как альтернативы systemctl

Если ошибка «systemctl: command not found» возникает из-за того, что ваша система не использует systemd, для управления службами можно воспользоваться командой sudo service. Она работает со старыми системами инициализации, такими как SysVinit и Upstart, и подходит для систем Ubuntu, которые опираются на init-скрипты вместо systemd.

Например, чтобы запустить службу, выполните:

sudo service <service_name> start

Заключение

systemd и его утилита командной строки systemctl вытеснили большинство старых систем инициализации, в том числе SysVinit и Upstart. Монолитная архитектура systemd и отступление от философии Unix нравятся не всем, однако именно systemd остаётся наиболее распространённым выбором. Надеемся, что вам удалось устранить ошибку «systemctl: command not found»: без этой утилиты возможности systemd существенно ограничены.

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

Что такое systemctl и что означает systemctl: Command Not Found?

systemctl — инструмент командной строки для управления службами в системах Linux, работающих на systemd, например Ubuntu. Ошибка «systemctl: command not found» возникает, когда утилита недоступна: как правило, это означает, что система не использует systemd или пакет systemd не установлен.

systemctl доступен на всех версиях Ubuntu?

Нет, systemctl доступен не на всех версиях Ubuntu. systemctl входит в состав системы инициализации systemd, которая используется по умолчанию в большинстве современных версий Ubuntu (начиная с 15.04). В более старых версиях или в некоторых минимальных установках могут использоваться альтернативные системы инициализации — SysVinit или Upstart.

Поделиться

Ещё в блоге

Читайте дальше.

Обложка статьи о лучших приложениях для самостоятельного хостинга на Cosmos Cloud с панелями приложений вокруг панели управления Cosmos.
Серверы и ОС

Лучшие приложения для самостоятельного хостинга на Cosmos Cloud: файлы, медиа, пароли, автоматизация и многое другое!

Возможно, вы уже настроили Cosmos Cloud и хотите узнать, какие приложения с ним хорошо сочетаются. Или ещё не выбрали Cosmos и просто хотите понять, насколько он подходит для ваших задач

Ник СильверНик Сильвер 16 мин чтения
Обложка Portainer vs Cosmos Cloud для управления Docker-приложениями с диаграммой гибридной настройки и неоновыми блоками ops и access.
Серверы и ОС

Portainer vs Cosmos Cloud: что лучше для управления Docker-приложениями

Если вы уже знаете Docker и хотите более чистый способ запуска растущего стека приложений, вот короткий ответ на вопрос Portainer vs Cosmos Cloud. Portainer, более сильный выбор для прямого

Ник СильверНик Сильвер 14 мин чтения
Главная иллюстрация Cosmos Cloud vs CasaOS vs Umbrel с тремя путями самостоятельного хостинга в едином абстрактном мире облачной сети.
Серверы и ОС

Cosmos Cloud vs CasaOS vs Umbrel: какая платформа для самостоятельного хостинга подходит вам?

Короткий ответ: CasaOS остаётся самым простым стартом, Umbrel предлагает самый аккуратный кураторский опыт, а Cosmos Cloud имеет смысл, когда нужен более жёсткий контроль над домен

Ник СильверНик Сильвер 11 мин чтения

Готовы к развёртыванию? От $2,48/мес.

Независимое облако с 2008 года. AMD EPYC, NVMe, 40 Gbps. Возврат денег в течение 14 дней.