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

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

Ник Сильвер By Ник Сильвер 7 минут чтения Обновлено 20 февраля 2025 г.
как исправить systemctl: команда не найдена

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

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

Итак, давайте поговорим о том, что означает ошибка «systemctl: команда не найдена», о различных причинах, по которым вы сталкиваетесь с этой ошибкой, и о том, как ее исправить.

Что означает systemctl: команда не найдена?

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

По сути, пакет systemd не установлен, или ваш дистрибутив или версия Linux не использует systemd; скорее, он использует старые системы управления сервисами, такие как init.d. Другая возможность заключается в том, что переменная среды PATH не включает каталог, в котором находится systemctl, а это означает, что ваша оболочка не может его найти.

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

Исправление systemctl: ошибка «Команда не найдена»

На следующих шагах мы проверим, установлен ли в вашей системе 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, команда that ничего не вернет.

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

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: команда не найдена».

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

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

sudo apt purge systemd
sudo apt install systemd

Затем перезагрузите систему с помощью этой команды:

sudo reboot

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

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

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

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: команда не найдена».

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

Если вы столкнулись с ошибкой «systemctl: команда не найдена», поскольку ваша система не использует systemd, вы можете использовать команду sudo service для управления службами. Эта команда работает со старыми системами инициализации, такими как SysVinit или Upstart. Это полезно для систем Ubuntu, которые используют сценарии инициализации вместо systemd.

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

sudo service <service_name> start

Заключительные мысли

systemd и его утилита командной строки systemctl заменили большинство других старых систем инициализации, таких как SysVinit и Upstart. Хотя systemd, возможно, не всем подходит для системы инициализации из-за его монолитной конструкции и философии, отличной от Unix, systemd по-прежнему считается распространенным выбором. Итак, надеемся, что вы смогли устранить ошибку «команда systemctl недоступна», поскольку невозможность использования утилиты командной строки systemd серьезно ограничивает ее возможности.

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

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

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

Доступен ли systemctl во всех версиях Ubuntu?

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

Делиться

Еще из блога

Продолжайте читать.

Лучшие самостоятельные приложения, которые можно запускать с помощью Cosmos Cloud: обложка с панелями приложений вокруг информационной панели Cosmos.
Серверы и ОС

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

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

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

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

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

Ник СильверНик Сильвер 14 минут чтения
Графика Cosmo Cloud, CasaOS и Umbrel показывает три автономных пути внутри одного абстрактного облачного сетевого мира.
Серверы и ОС

Cosmos Cloud, CasaOS или Umbrel: какая автономная платформа подойдет для вашей установки?

Короткий ответ: CasaOS по-прежнему является самым простым местом для начала, Umbrel имеет самый чистый и тщательно продуманный интерфейс, а Cosmo Cloud имеет больше смысла, если вы хотите более жесткий контроль над doma.

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

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

Независимое облако, с 2008 г. AMD EPYC, NVMe, 40 Гбит/с. 14-дневный возврат денег.