Бързо решение за разрешаване на проблема с командата „systemctl“ и въвеждане на някои ефективни алтернативи за нея
systemctl
тъй като е важна помощна програма в екосистемата на Linux, много често е възможно да срещнете проблемна грешка „systemctl: командата не е намерена“, когато се опитате да стартирате 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 стартиране 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
командата функционира по същия начин, единствената разлика тук е съвместимостта на командата с помощните програми, които са отговорни за доброто функциониране на вашата система.
Нека да видим обслужване
команда с илюстрация.
Общ синтаксис:
sudo услуга [име_услуга] [действие]
В горния синтаксис, the [действие]
пространството може да включва действия като започнете
, Спри се
, рестартирам
или статус
.
Ще изпълним същата команда, за да стартираме 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 Активна: активен (излизал) от понеделник 28.09.2020 11:22:34 IST; преди 1 час 5 минути Документи: man:ufw(8) Процес: 333 ExecStart=/lib/ufw/ufw-init стартиране тихо (код=изход, състояние =0/SU Основен PID: 333 (код=изход, състояние=0/УСПЕХ) 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= изход, статус=0/SUCCE Основен PID: 1248 (apache2) Задачи: 55 (лимит: 4456) CGroup: /system.slice/apache2.service ├─1248 /usr/sbin/apache2 -k начало ├─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 Стартира HTTP Systemd [1] Сървър. 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 Активен: неактивен (мъртъв) от понеделник 28.09.2020 12 :42:06 IST; Преди 1 секунди Процес: 4928 ExecStop=/usr/sbin/apachectl стоп (код=изход, състояние=0/УСПЕХ) Процес: 1172 ExecStart=/usr/sbin/apachectl старт (код=изход, състояние=0/УСПЕХ) Основен PID : 1248 (код=изход, статус=0/УСПЕХ) 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
пакет във вашата система.
Използвайте следната команда, за да проверите пакета във вашата система.
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 --потребителска интеграция) ii libnss-systemd:amd64 237-3ubuntu10.42 модул amd64 dynamics nss разделителна способност на потребителски и групови имена ii libpam-systemd:amd64 237-3ubuntu10.42 amd64 системен и сервизен мениджър - PAM модул ii libsystemd0:amd64 237-3ubuntu10.42 amd64 systemd помощна библиотека ii libsystemd0:i386 systemd library i137 u138 ii networkd-dispatcher 1.7-0ubuntu3.3 всички диспечерски услуги за systemd-networkd промени в състоянието на връзката ri python3-systemd 234-1build1 amd64 Python 3 обвързвания за systemd ii systemd 237-3ubuntu10.42 amd64 systemd-7 мениджър на системата iiv 3ubuntu10.42 amd64 системен и сервизен мениджър - SysV връзки gaurav@ubuntu:~$
Ако получите изход, подобен на този, това означава, че systemd
е инсталиран на вашата система.
Ако не е инсталиран, можете да го инсталирате по следния начин.
sudo apt-получи актуализация
sudo apt-get install systemd
Ако е инсталиран и все още грешката продължава, опитайте да го инсталирате отново, като използвате следната команда.
sudo apt-get install --reinstall systemd
Това ще реши проблема ви, като инсталирате systemd
полезност.
Заключение
Научихме се да коригираме „systemctl: командата не е намерена“ в този урок. Можем спокойно да заключим, че използвайки обслужване
команда вместо systemctl
е добра идея и решава проблема много добре. Можем лесно да използваме обслужване
команда, след като разберете илюстративните примери, показани в урока.