Быстрое решение проблемы с помощью команды «systemctl» и введение некоторых эффективных альтернатив ей.
systemctl
поскольку это важная утилита в экосистеме Linux, очень часто вы можете столкнуться с ошибкой «systemctl: command not found» при попытке запустить systemctl
команда. Это может быть не для всех дистрибутивов Linux, но вы, вероятно, можете столкнуться с этой ошибкой, когда используете старую версию дистрибутива Linux, которая не поддерживает systemctl
команда.
Возникающая у вас проблема - очень распространенная проблема, которую легко исправить. Так что совсем не беспокойтесь и просто просмотрите полное руководство, чтобы найти быстрое и легкое решение.
Мы постараемся сначала разобраться в проблеме, а затем исправить ее.
Понимание systemctl
и systemd
Поскольку ошибка относится к systemctl
, было бы хорошо знать основы этой команды, чтобы лучше понять, как исправить эту ошибку.
systemctl
- это утилита командной строки, которую предлагает Linux, которая используется для мониторинга и управления еще одной утилитой командной строки с именем ‘systemd
‘. Он также проверяет и контролирует системного администратора вместе с «systemd
' полезность.
Общий синтаксис:
systemctl [опция] [имя]
systemd
представляет собой набор демонов, библиотек и утилит, управляющих программами, запускаемыми при загрузке вашей системы. systemd
также удается инициировать важную работу, например, вести журнал активности системы.
Эта утилита функционирует как утилита центрального управления для большинства, если не для всех операционных систем на базе Linux.
Основная причина ошибки
Наиболее вероятной причиной этой ошибки может быть то, что вы используете старую версию дистрибутива Linux. Многие из старых версий используют SysV init
вместо systemd
полезность.
systemd
Утилита отсутствует в предыдущих версиях Linux, так как это недавнее добавление в корзину утилит, предоставляемых Linux. systemctl
совместим с функциями и мониторами с systemd
утилита и не будет работать с предыдущими конфигурациями, такими как SysV
в этом
или Выскочка
.
Если вы не используете systemd
, то эта ошибка ожидаема. Это так просто и понятно.
Вы можете столкнуться с этой ошибкой следующим образом.
gaurav @ ubuntu: ~ $ sudo systemctl start ufw [sudo] пароль для gaurav: sudo: systemctl: команда не найдена gaurav @ ubuntu: ~ $
Здесь мы попытались запустить Ubuntu Fire Wall (ufw
) с помощью systemctl
команда и обнаружила ошибку «systemctl: команда не найдена».
Итак, что делать теперь, если вы не хотите менять свой текущий дистрибутив Linux, который использует какую-то другую утилиту центрального управления, отличную от systemd
? Что ж, у нас есть быстрое решение для вас, которое позволит вам сохранить текущий дистрибутив Linux, а также исправить вашу ошибку в кратчайшие сроки.
Давайте теперь рассмотрим исправление.
Исправление ошибки «systemctl: команда не найдена»
Наконец, давайте теперь посмотрим на решение рассматриваемой проблемы после анализа причин и основных фактов о проблеме.
Исправление 1: Замена systemctl
с участием услуга
команда
Простое исправление рассматриваемой ошибки - использовать услуга
команда вместо ошибки, вызывающей systemctl
команда.
услуга
команда помогает в запуске SystemV init
скрипт, который используется старыми дистрибутивами Linux. Если вы не хотите устанавливать systemd
в вашей системе, это исправление наверняка подойдет вам.
Вы можете запускать, перезапускать или останавливать любые службы и демоны в вашем дистрибутиве Linux, используя услуга
команда.
В услуга
команда и systemctl
command, единственное отличие заключается в совместимости команды с утилитами, которые отвечают за корректную работу вашей системы.
Давайте посмотрим услуга
команда с иллюстрацией.
Общий синтаксис:
sudo service [имя_службы] [действие]
В приведенном выше синтаксисе [действие]
пробел может включать такие действия, как Начало
, останавливаться
, начать сначала
или статус
.
Мы запустим ту же команду, чтобы запустить ufw
сервис с использованием услуга
команда.
sudo service ufw start
Вывод:
gaurav @ ubuntu: ~ $ sudo service ufw start gaurav @ ubuntu: ~ $ sudo service ufw status ● ufw.service - несложный брандмауэр загружен: загружен (/lib/systemd/system/ufw.service; включен; предустановка поставщика: enab Active: активен (завершен) с понедельника 2020-09-28 11:22:34 IST; 1ч 5мин назад Документы: man: ufw (8) Процесс: 333 ExecStart = / lib / ufw / ufw-init start quiet (code = exited, status = 0 / SU Главный PID: 333 (code = exited, status = 0 / SUCCESS) 28 сентября, 11:22:34 ubuntu systemd [1]: запущен Несложный брандмауэр. Предупреждение: журнал был изменен с момента запуска устройства. Вывод журнала неполный
Здесь услуга
команда используется вместо systemctl
команда, и это сработало абсолютно нормально.
Давайте посмотрим еще на один пример услуга
команда, чтобы получить правильное понимание этого.
sudo service apache2 start
Вывод:
gaurav @ ubuntu: ~ $ sudo service apache2 status ● apache2.service - HTTP-сервер Apache загружен: загружен (/lib/systemd/system/apache2.service; включен; предустановка поставщика: Drop-In: / lib / systemd / system / apache2.service.d └─apache2-systemd.conf Активен: активен (работает) с понедельника 2020-09-28 11:22:47 IST; 1ч 16мин назад Процесс: 1172 ExecStart = / usr / sbin / apachectl start (code = завершено, status = 0 / SUCCE Главный PID: 1248 (apache2) Задачи: 55 (ограничение: 4456) CGroup: /system.slice/apache2.service ├─1248 / usr / sbin / apache2 -k start ├─1249 / usr / sbin / apache2 -k start └─1250 / usr / sbin / apache2 -k start 28 сентября 11:22:43 ubuntu systemd [1]: запуск HTTP-сервера Apache ... 28 сентября 11:22:47 ubuntu apachectl [1172 ]: AH00112: Предупреждение: DocumentRoot [/ var / www 28 сентября 11:22:47 ubuntu apachectl [1172]: AH00558: apache2: Не удалось надежно удалить 28 сентября 11:22:47 ubuntu systemd [1]: запущен Apache HTTP Сервер gaurav @ ubuntu: ~ $
Мы использовали услуга
команда для запуска утилиты apache2. С помощью статус
вариант с услуга
команда отобразит текущий статус службы. Мы получим подробную информацию о том, работает он или мертв (неактивен).
Давайте теперь воспользуемся останавливаться
действие, чтобы остановить службу apache2 с помощью услуга
команда.
gaurav @ ubuntu: ~ $ sudo service apache2 stop gaurav @ ubuntu: ~ $ sudo service apache2 строки состояния 1--1 ... пропуск ... ● apache2.service - HTTP-сервер Apache загружен: загружен (/ lib / systemd / system / apache2.service; включен; предустановка поставщика: включен) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Активен: неактивен (мертв) с понедельника 2020-09-28 12 : 42: 06 IST; 1с назад Процесс: 4928 ExecStop = / usr / sbin / apachectl stop (code = exited, status = 0 / SUCCESS) Процесс: 1172 ExecStart = / usr / sbin / apachectl start (code = exited, status = 0 / SUCCESS) Главный PID : 1248 (code = exited, status = 0 / SUCCESS) 28 сентября 11:22:43 ubuntu systemd [1]: Запуск HTTP-сервера Apache ... 28 сентября 11:22:47 ubuntu apachectl [1172]: AH00112: Предупреждение : DocumentRoot [/ var / www / html] не существует 28 сентября 11:22:47 ubuntu apachectl [1172]: AH00558: apache2: Не удалось надежно определить полное доменное имя сервера с помощью :: 1. Установите S сен 28 11:22:47 ubuntu systemd [1]: Запущен HTTP-сервер Apache.
Из подробных примеров, объясненных выше, мы можем сделать вывод, что мы можем использовать эту команду вместо systemctl
команда для управления и мониторинга других демонов и служб в дистрибутиве Linux.
Исправление 2: проверка systemd
упаковка
Иногда может случиться так, что только systemd
установка пакета может решить проблему. Во-первых, вам нужно проверить статус установки systemd
package в вашей системе.
Используйте следующую команду, чтобы проверить пакет в вашей системе.
sudo dpkg -l | grep systemd
Если systemd
Утилита уже установлена, вы получите результат, аналогичный показанному ниже.
gaurav @ ubuntu: ~ $ sudo dpkg -l | grep systemd [sudo] пароль для gaurav: ii dbus-user-session 1.12.2-1ubuntu1.2 amd64 простая система межпроцессного обмена сообщениями (systemd --user integration) ii libnss-systemd: amd64 237-3ubuntu10.42 amd64 nss модуль, обеспечивающий динамический разрешение имен пользователей и групп ii libpam-systemd: amd64 237-3ubuntu10.42 amd64 system and service manager - модуль PAM ii libsystemd0: amd64 237-3ubuntu10.42 amd64 служебная библиотека systemd ii libsystemd0: i386 237-3ubuntu10.42 служебная библиотека i386 systemd ii networkd-dispatcher 1.7-0ubuntu3.3 все службы диспетчера для изменения статуса соединения systemd-networkd ri python3-systemd 234-1build1 amd64 Python 3 привязки для systemd ii systemd 237-3ubuntu10.42 amd64 system and service manager ii systemd-sysv 237- 3ubuntu10.42 amd64 system and service manager - SysV связывает gaurav @ ubuntu: ~ $
Если вы получите аналогичный результат, это означает, что systemd
установлен в вашей системе.
Если он не установлен, вы можете установить его следующим образом.
sudo apt-get update
sudo apt-get install systemd
Если он установлен, но ошибка не устранена, попробуйте переустановить его, используя следующую команду.
sudo apt-get install --reinstall systemd
Это решит вашу проблему, установив systemd
полезность.
Вывод
В этом руководстве мы научились исправлять ошибку «systemctl: command not found». Мы можем с уверенностью заключить, что использование услуга
команда вместо systemctl
хорошая идея и очень хорошо решает проблему. Мы можем легко использовать услуга
после понимания иллюстративных примеров, показанных в руководстве.