Cum să remediați eroarea „Comanda Systemctl nu a fost găsită” în Linux

O remediere rapidă pentru a rezolva problema cu comanda „systemctl” și introducerea unor alternative eficiente la aceasta

systemctl fiind un utilitar important în ecosistemul Linux, este foarte frecvent să întâmpinați o problemă „systemctl: command not found” atunci când încercați să rulați systemctl comanda. Acesta poate să nu fie cazul pentru toate distribuțiile Linux, dar probabil că puteți întâlni această eroare atunci când utilizați o versiune mai veche a distribuției Linux care nu acceptă systemctl comanda.

Problema care vi se întâmplă este o problemă foarte frecventă și poate fi rezolvată cu ușurință. Deci, nu vă faceți griji deloc și parcurgeți tutorialul complet pentru a găsi o soluție rapidă și ușoară.

Vom încerca mai întâi să înțelegem problema și apoi să o remediem.

Perspective asupra systemctl și systemd

Deoarece eroarea este cu referire la systemctl comandă, ar fi bine să cunoașteți elementele de bază ale acestei comenzi pentru a înțelege mai bine remedierea acestei erori.

systemctl este un utilitar de linie de comandă oferit de Linux, care este folosit pentru a monitoriza și controla un alt utilitar de linie de comandă numit „systemd‘. De asemenea, inspectează și controlează managerul de sistem împreună cu „systemd‘utilitate.

Sintaxă generală:

systemctl [opțiune] [nume]

systemd este un pachet de daemoni, biblioteci și utilitare care controlează programele care rulează la pornirea sistemului. systemd de asemenea, reușește să inițieze o muncă importantă, cum ar fi începerea unui jurnal al activității sistemului.

Acest utilitar funcționează ca utilitar central de management pentru majoritatea, dacă nu pentru toate, sistemele de operare bazate pe Linux.

Cauza principală a erorii

Cea mai probabilă cauză a acestei erori ar putea fi faptul că utilizați o versiune mai veche a distribuției Linux. Multe dintre versiunile mai vechi folosesc SysV init in loc de systemd utilitate.

systemd utilitarul este absent în versiunile anterioare de Linux, deoarece este o adăugare recentă la coșul de utilități furnizate de Linux. systemctl este compatibil să funcționeze și să monitorizeze cu systemd utilitar și nu va funcționa cu configurațiile anterioare, cum ar fi SysVinit sau Parvenit.

Dacă nu utilizați systemd, atunci această eroare este de așteptat. Este la fel de simplu și direct ca asta.

Este posibil să întâmpinați această eroare în felul următor.

gaurav@ubuntu:~$ sudo systemctl start ufw [sudo] parola pentru gaurav: sudo: systemctl: comanda nu a fost găsită gaurav@ubuntu:~$ 

Aici, am încercat să pornim Ubuntu Fire Wall (ufw) folosind systemctl comanda și am întâlnit eroarea „systemctl: command not found”.

Deci, ce să faceți acum dacă nu doriți să vă schimbați distribuția Linux actuală, care utilizează un alt utilitar de management central, altul decât systemd? Ei bine, avem o remediere rapidă pentru dvs., care vă va permite să vă păstrați distribuția Linux actuală, precum și să vă remediați eroarea în cel mai scurt timp.

Să observăm corectura acum.

Remedierea erorii „systemctl: comanda nu a fost găsită”.

În cele din urmă, să ne uităm acum la soluția problemei în cauză, după ce am analizat cauzele și faptele de bază despre problemă.

Remedierea 1: Înlocuire systemctl cu serviciu comanda

O soluție simplă pentru eroarea în cauză este să utilizați serviciu comanda în loc de eroarea care provoacă systemctl comanda.

serviciu comanda ajută la rularea SystemV init script care este folosit de distribuțiile mai vechi Linux. Dacă nu doriți să instalați systemd utilitar pe sistemul dvs., această remediere va funcționa cu siguranță pentru dvs.

Puteți porni, reporni sau opri orice serviciu și daemon de pe distribuția dvs. Linux folosind serviciu comanda.

The serviciu comanda și systemctl funcția de comandă în același mod, singura diferență aici este compatibilitatea comenzii cu utilitățile care sunt responsabile pentru funcționarea grațioasă a sistemului dumneavoastră.

Să vedem serviciu comanda cu o ilustrație.

Sintaxa generala:

serviciu sudo [nume_serviciu] [acțiune]

În sintaxa de mai sus, [acțiune] spațiul poate include acțiuni precum start, Stop, repornire sau stare.

Vom rula aceeași comandă pentru a porni ufw serviciul folosind serviciu comanda.

sudo service ufw start

Ieșire:

gaurav@ubuntu:~$ sudo service ufw start gaurav@ubuntu:~$ sudo service ufw status ● ufw.service - Firewall necomplicat Încărcat: încărcat (/lib/systemd/system/ufw.service; activat; prestabilit furnizor: activat: activ: activ (ieșit) din Luni 2020-09-28 11:22:34 IST; acum 1h 5min Documente: man:ufw(8) Proces: 333 ExecStart=/lib/ufw/ufw-init start silențios (cod=ieșit, stare =0/SU PID principal: 333 (cod=ieșit, stare=0/SUCCESS) 28 septembrie 11:22:34 ubuntu systemd[1]: Pornit Firewall necomplicat. Avertisment: Jurnalul a fost rotit de la pornirea unității. Ieșirea jurnalului este incomplete

Aici serviciu comanda este folosită în loc de systemctl comandă și a funcționat absolut bine.

Să vedem încă un exemplu de serviciu comanda pentru a obține o înțelegere adecvată a acesteia.

sudo service apache2 start

Ieșire:

gaurav@ubuntu:~$ sudo service apache2 status ● apache2.service - Serverul Apache HTTP încărcat: încărcat (/lib/systemd/system/apache2.service; activat; prestabilit furnizor: Drop-In: /lib/systemd/system/ apache2.service.d └─apache2-systemd.conf Activ: activ (în rulare) din Luni 2020-09-28 11:22:47 IST; acum 1h 16min Proces: 1172 ExecStart=/usr/sbin/apachectl start (code= ieșit, stare=0/SUCCE PID principal: 1248 (apache2) Sarcini: 55 (limită: 4456) CGroup: /system.slice/apache2.service ├─1248 /usr/sbin/apache2 -k start ├─/1249 sbin/apache2 -k start └─1250 /usr/sbin/apache2 -k start 28 septembrie 11:22:43 ubuntu systemd[1]: Pornirea serverului Apache HTTP... 28 septembrie 11:22:47 ubuntu apachectl[1172 ]: AH00112: Avertisment: DocumentRoot [/var/www 28 septembrie 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: Nu a putut fi depistat în mod fiabil 28 septembrie 11:22:47 ubuntu systemd[1]: HTTP a pornit Apache Server.gaurav@ubuntu:~$ 

Am folosit serviciu comandă pentru a porni utilitarul apache2. Folosind stare opțiunea cu serviciu comanda va afișa starea curentă a serviciului. Vom obține detalii dacă funcționează sau este mort (inactiv).

Să folosim acum Stop acțiune pentru a opri serviciul apache2 folosind serviciu comanda.

gaurav@ubuntu:~$ sudo service apache2 stop gaurav@ubuntu:~$ sudo service apache2 linii de stare 1--1...sărit... ● apache2.service - Serverul Apache HTTP încărcat: încărcat (/lib/systemd/ system/apache2.service; activat; prestabilit furnizor: activat) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Activ: inactiv (mort) din luni 2020-09-28 12 :42:06 IST; acum 1 secundă Proces: 4928 ExecStop=/usr/sbin/apachectl stop (cod=ieșit, stare=0/SUCCESS) Proces: 1172 ExecStart=/usr/sbin/apachectl start (cod=ieșit, stare=0/SUCCESS) PID principal : 1248 (cod=exit, status=0/SUCCESS) 28 septembrie 11:22:43 ubuntu systemd[1]: Se pornește serverul Apache HTTP... 28 septembrie 11:22:47 ubuntu apachectl[1172]: AH00112: Avertisment : DocumentRoot [/var/www/html] nu există 28 septembrie 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: Nu s-a putut determina în mod fiabil numele de domeniu complet calificat al serverului, folosind ::1. Setați 'S 28 septembrie 11:22:47 ubuntu systemd[1]: a pornit serverul Apache HTTP.

Din exemplele detaliate explicate mai sus, putem concluziona că putem folosi această comandă în loc de systemctl comandă pentru a controla și monitoriza alți demoni și servicii din distribuția Linux.

Remedierea 2: se verifică systemd pachet

Uneori se poate întâmpla ca numai systemd instalarea pachetului poate rezolva problema. În primul rând, trebuie să verificați starea instalării systemd pachet pe sistemul dvs.

Utilizați următoarea comandă pentru a verifica pachetul pe sistemul dvs.

sudo dpkg -l | grep systemd

Dacă systemd Utility este deja instalat, veți obține o ieșire similară cu cea prezentată mai jos.

gaurav@ubuntu:~$ sudo dpkg -l | grep systemd [sudo] parola pentru gaurav: ii dbus-user-session 1.12.2-1ubuntu1.2 amd64 sistem simplu de mesagerie interproces (systemd --user integration) ii libnss-systemd:amd64 237-3ubuntu10.42 amd64 nss rezoluție nume de utilizator și grup ii libpam-systemd:amd64 237-3ubuntu10.42 manager de sistem și servicii amd64 - modulul PAM ii libsystemd0:amd64 237-3ubuntu10.42 biblioteca de utilitate amd64 systemd ii libsystemd0:i386 23186. ii networkd-dispatcher 1.7-0ubuntu3.3 toate Serviciul Dispatcher pentru modificări ale stării conexiunii systemd-networkd ri python3-systemd 234-1build1 amd64 Legături Python 3 pentru systemd ii systemd 237-3ubuntu10.42 amd64 systemd-systemd-ysv ii 237 3ubuntu10.42 amd64 manager de sistem și servicii - legături SysV gaurav@ubuntu:~$ 

Dacă obțineți o ieșire similară cu aceasta, înseamnă că systemd este instalat pe sistemul dvs.

Dacă nu este instalat, îl puteți instala în felul următor.

sudo apt-get update
sudo apt-get install systemd

Dacă este instalat și eroarea persistă, atunci încercați să o reinstalați folosind următoarea comandă.

sudo apt-get install --reinstall systemd

Acest lucru vă va rezolva problema prin instalarea systemd utilitate.

Concluzie

Am învățat să reparăm „systemctl: comanda nu a fost găsită” în acest tutorial. Putem concluziona cu siguranță că folosind serviciu comanda în loc de systemctl este o idee bună și rezolvă problema foarte bine. Putem folosi cu ușurință serviciu comanda după înțelegerea exemplelor ilustrative prezentate în tutorial.