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

Как исправить ошибку systemctl: Command Not Found на 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.

Поделиться

Другие статьи блога

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

Лучшие self-hosted приложения для запуска с Cosmos Cloud — обложка с панелями приложений вокруг дашборда Cosmos.
Серверы и ОС

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

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

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

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 дней.