Другое

«Команда systemctl не найдена»: почему так происходит и что делать

Lorem ipsum dolor

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

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

Что такое «systemctl»

Команда «systemctl» является системной командой для управления другой системной утилитой «systemd». «Systemd» это распространенная системная утилита-менеджер, которая используется в дистрибутивах Линукс. Если коротко, то «systemd» отвечает за взаимодействие с системными процессами, а именно:

  • запуск;

  • остановку;

  • изменение конфигурации;

  • проверку статуса;

  • автозагрузку;

  • и др.

То есть, когда вам нужно проконтролировать работу какой-либо системной службы, вы обращаетесь к утилите «systemd» через команду «systemctl». Среди обычных пользователей компьютеров, управляемых дистрибутивами Linux, использование команды «systemctl» и утилиты «systemd» не распространено. Но вот при администрировании Линукс-серверов без знания этих основ управления сервером при помощи «systemd» будет довольно трудно. Мы обязательно детально опишем работу с утилитой «systemd» при помощи команд «systemctl» в следующих статьях, а пока давайте решим проблему, когда команда «systemctl» не найдена.

Решение проблемы «команда «systemctl» не найдена»

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

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

  2. Вы используете старую версию дистрибутива Linux. Это наиболее вероятная причина, если вы в первый раз решили использовать команду «systemctl» и получили в ответ ошибку. Не все дистрибутивы Линукс перешли на утилиту «systemd», многие до сих пор используют утилиту «SystemV init» или «Upstart». Если это так, тогда выполнение команды «systemctl» выдаст ошибку, так как ваше устройство с «более старыми утилитами» просто не поддерживает команду «systemctl».

При работе в терминале это может выглядеть так:

mycomputer@ubuntu:~$ sudo systemctl start ufw 

[sudo] пароль для mycomputer: 

sudo: systemctl: команда не найдена 

mycomputer@ubuntu:~$ 

 

В примере выше мы попробовали активировать Ubuntu FireWall(ufw), используя команду «systemctl», но обнаружили ошибку «systemctl: команда не найдена». Исправить эту ошибку можно, и для этого не придется переустанавливать другой Linux-дистрибутив. Существует несколько вариантов решения проблемы.

Решаем «systemctl: команда не найдена»

Первый и самый верный способ — это не использовать команду «systemctl». Если у вас в Линуксе установлена «более старая» утилита для управления системой, тогда нужно заменить команду «systemctl» на команду «service». Команда «service» выполняет все то же самое в утилите «systemV init», что и команда «systemctl» в «systemd».

По сути, для каждой системной утилиты будет своя команда для управления. Проблема в том, что команды совместимы только со своими утилитами.

В нашем случае, чтобы запустить «ufw», сценарий в терминале мог бы выглядеть так:

 mycomputer@ubuntu:~$ sudo service utw start 

[sudo] пароль для mycomputer: 

 

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

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

sudo dpkg -l | grep systemd

 

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

sudo apt-get update

sudo apt-get install systemd

 

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

sudo apt-get install - - reinstall systemd

 

Заключение

Проблема «systemctl: команда не найдена» не является критической, которую невозможно было бы исправить. Мы описали два верных способа, которые точно решат эту проблему. Если у вас «более старая» версия Линукс-дистрибутива, тогда просто замените «systemctl» на «service», и проблема тут же решится. «Systemd» не имеет явных преимуществ перед «более старыми» альтернативными утилитами, поэтому ее установка или переустановка нужны только в том случае, если ранее она уже использовалась на устройстве.

Схожие статьи

Линейная алгебра: что это такое, как разобраться с матрицами
Другое

Линейная алгебра: что это такое, как разобраться с матрицами

Программист PL/SQL: все о профессии разработчика баз данных
Другое

Программист PL/SQL: все о профессии разработчика баз данных

Как можно вести несколько проектов одновременно: ТОП-10 лайфхаков
Другое

Как можно вести несколько проектов одновременно: ТОП-10 лайфхаков

Виртуальный класс: это что такое, зачем нужно и где используется?
Другое

Виртуальный класс: это что такое, зачем нужно и где используется?