Hiter popravek za rešitev težave z ukazom 'systemctl' in uvedbo nekaterih učinkovitih alternativ zanj
systemctl
ker je pomemben pripomoček v ekosistemu Linux, je zelo pogosto, da lahko naletite na težavo z napako »systemctl: ukaz ni najden«, ko poskušate zagnati systemctl
ukaz. To morda ne velja za vse distribucije Linuxa, vendar lahko verjetno naletite na to napako, ko uporabljate starejšo različico distribucije Linuxa, ki ne podpira systemctl
ukaz.
Težava, ki se vam pojavi, je zelo pogosta in jo je mogoče enostavno odpraviti. Zato ne skrbite in preprosto preglejte celotno vadnico, da poiščete hitro in enostavno rešitev.
Najprej bomo poskušali razumeti težavo in jo nato odpraviti.
Vpogled v systemctl
in systemd
Ker je napaka v zvezi z systemctl
ukaz, bi bilo dobro poznati osnove tega ukaza, da bi bolje razumeli popravek te napake.
systemctl
je pripomoček ukazne vrstice, ki ga ponuja Linux, ki se uporablja za spremljanje in nadzor enega drugega pripomočka ukazne vrstice z imenom 'systemd
‘. Prav tako pregleduje in nadzira upravitelja sistema skupaj z "systemd
'uporabnost.
Splošna sintaksa:
systemctl [možnost] [ime]
systemd
je sveženj demonov, knjižnic in pripomočkov, ki nadzoruje programe, ki se izvajajo, ko se vaš sistem zažene. systemd
uspe tudi začeti pomembno delo, kot je začetek dnevnika sistemske dejavnosti.
Ta pripomoček deluje kot osrednji pripomoček za upravljanje za večino, če ne za vse operacijske sisteme, ki temeljijo na Linuxu.
Osnovni vzrok napake
Najverjetnejši vzrok za to napako je lahko ta, da uporabljate starejšo različico distribucije Linuxa. Številne starejše različice uporabljajo SysV init
namesto systemd
uporabnost.
systemd
pripomoček v prejšnjih različicah Linuxa ni, saj je nedavni dodatek v košarici pripomočkov, ki jih ponuja Linux. systemctl
je združljiv z delovanjem in spremljanjem systemd
pripomoček in ne bo deloval s prejšnjimi konfiguracijami, kot je SysV
v
oz Nagnjenec
.
Če ne uporabljate systemd
, potem je ta napaka pričakovana. To je tako preprosto in naravnost.
Na to napako lahko naletite na naslednji način.
gaurav@ubuntu:~$ sudo systemctl start ufw [sudo] geslo za gaurav: sudo: systemctl: ukaz ni najden gaurav@ubuntu:~$
Tukaj smo poskušali zagnati požarni zid Ubuntu (ufw
) uporabljati systemctl
ukaz in naletel na napako »systemctl: ukaz ni najden«.
Torej, kaj storiti zdaj, če ne želite spremeniti svoje trenutne distribucije Linuxa, ki uporablja drug pripomoček za centralno upravljanje, razen systemd
? No, za vas imamo hiter popravek, ki bi vam omogočil, da obdržite svojo trenutno distribucijo Linuxa in odpravite svojo napako v kratkem času.
Oglejmo si zdaj popravek.
Odpravljanje napake »systemctl: ukaz ni najden«.
Na koncu si poglejmo rešitev zadevnega problema po analizi vzrokov in osnovnih dejstev o problemu.
Popravek 1: Zamenjava systemctl
z storitev
ukaz
Preprosta rešitev za zadevno napako je uporaba storitev
ukaz namesto napake, ki je povzročila systemctl
ukaz.
storitev
ukaz pomaga pri izvajanju SystemV init
skript, ki ga uporabljajo starejše distribucije Linuxa. Če ne želite namestiti systemd
pripomoček na vašem sistemu, bo ta popravek zagotovo deloval za vas.
Vse storitve in demone v vaši distribuciji Linuxa lahko zaženete, znova zaženete ali ustavite z uporabo storitev
ukaz.
The storitev
ukaz in systemctl
ukaz deluje na enak način, edina razlika tukaj je združljivost ukaza s pripomočki, ki so odgovorni za elegantno delovanje vašega sistema.
Poglejmo si storitev
ukaz z ilustracijo.
Splošna sintaksa:
storitev sudo [ime_storitve] [dejanje]
V zgornji sintaksi je [akcija]
prostor lahko vključuje dejanja, kot so začnite
, ustavi
, ponovni zagon
oz stanje
.
Za zagon bomo zagnali isti ukaz ufw
storitev z uporabo storitev
ukaz.
sudo storitev ufw start
Izhod:
gaurav@ubuntu:~$ sudo service ufw start gaurav@ubuntu:~$ sudo service ufw status ● ufw.service - nezapleten požarni zid Naloženo: naloženo (/lib/systemd/system/ufw.service; omogočeno; prednastavitev ponudnika: enab Aktivno: aktiven (zapustil) od ponedeljka 28.09.2020 11:22:34 IST; pred 1 h 5 min Dokumenti: man:ufw(8) Proces: 333 ExecStart=/lib/ufw/ufw-init zagon tiho (koda=izhod, status =0/SU Glavni PID: 333 (koda=izhod, status=0/USPEH) 28. sep. 11:22:34 ubuntu systemd[1]: Zagnan Nezapleten požarni zid. Opozorilo: Dnevnik je bil zasukan od začetka enote. Izhod dnevnika je nepopolna
Tukaj, storitev
namesto ukaza se uporablja ukaz systemctl
ukaz in je delovalo popolnoma v redu.
Poglejmo si še en primer storitev
ukaz, da bi ga pravilno razumeli.
zagon storitve sudo apache2
Izhod:
gaurav@ubuntu:~$ sudo service apache2 status ● apache2.service - strežnik HTTP Apache je naložen: naložen (/lib/systemd/system/apache2.service; omogočeno; prednastavitev ponudnika: Drop-In: /lib/systemd/system/ apache2.service.d └─apache2-systemd.conf Aktiven: aktiven (teče) od ponedeljka 28.09.2020 11:22:47 IST; pred 1 h 16 min Proces: 1172 ExecStart=/usr/sbin/apachectl start (code= izstopil, status=0/SUCCE Glavni PID: 1248 (apache2) Naloge: 55 (omejitev: 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. sep. 11:22:43 ubuntu systemd[1]: Zagon strežnika HTTP Apache... 28. sep. 11:22:47 ubuntu apachectl[1172 ]: AH00112: Opozorilo: DocumentRoot [/var/www, 28. sep. 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: ni bilo mogoče zanesljivo preveriti 28. sep. 11:22:47 ubuntu je zagnal HTTP sistemski d[1]: Strežnik. gaurav@ubuntu:~$
Uporabili smo storitev
ukaz za zagon pripomočka apache2. Uporabljati stanje
možnost z storitev
ukaz bo prikazal trenutno stanje storitve. Dobili bomo podrobnosti, ali deluje ali je mrtev (neaktiven).
Zdaj pa uporabimo ustavi
dejanje za zaustavitev storitve apache2 z uporabo storitev
ukaz.
gaurav@ubuntu:~$ sudo storitev apache2 stop gaurav@ubuntu:~$ sudo storitev apache2 vrstice stanja 1--1...preskok... ● apache2.service - strežnik Apache HTTP naložen: naložen (/lib/systemd/ system/apache2.service; omogočeno; prednastavitev ponudnika: omogočena) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Aktiven: neaktiven (mrtev) od pon. 28. 9. 2020 12 :42:06 IST; Pred 1 s Proces: 4928 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS) Proces: 1172 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS) Glavni PID : 1248 (koda=izhod, status=0/USPEH) 28. sep. 11:22:43 ubuntu systemd[1]: Zagon strežnika HTTP Apache... 28. sep. 11:22:47 ubuntu apachectl[1172]: AH00112: Opozorilo : DocumentRoot [/var/www/html] ne obstaja 28. sep 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: ni bilo mogoče zanesljivo določiti polnega imena domene strežnika z uporabo ::1. Nastavite 'S 28. sep. 11:22:47 ubuntu systemd[1]: Zagnal strežnik HTTP Apache.
Iz zgoraj razloženih podrobnih primerov lahko sklepamo, da lahko namesto ukaza uporabimo ta ukaz systemctl
ukaz za nadzor in spremljanje drugih demonov in storitev v distribuciji Linuxa.
2. popravek: preverjanje systemd
paket
Včasih se lahko zgodi, da le systemd
namestitev paketa lahko odpravi težavo. Najprej morate preveriti stanje namestitve systemd
paket na vašem sistemu.
Uporabite naslednji ukaz, da preverite paket v vašem sistemu.
sudo dpkg -l | grep systemd
Če systemd
pripomoček je že nameščen, boste dobili izhod, podoben, kot je prikazano spodaj.
gaurav@ubuntu:~$ sudo dpkg -l | grep systemd [sudo] geslo za gaurav: ii dbus-user-session 1.12.2-1ubuntu1.2 amd64 preprost medprocesni sistem za sporočanje (systemd --user integracija) ii libnss-systemd:amd64 237-3ubuntu10.42 modul amd64 dynamics ločljivost imen uporabnikov in skupine ii libpam-systemd:amd64 237-3ubuntu10.42 amd64 sistemski in storitveni upravitelj - modul PAM ii libsystemd0:amd64 237-3ubuntu10.42 amd64 knjižnica pomožnih programov systemd ii libsystemd0:i386 sistemska knjižnica i137-i386 u138 ii networkd-dispatcher 1.7-0ubuntu3.3 vse dispečerske storitve za systemd-networkd spremembe statusa povezave ri python3-systemd 234-1build1 amd64 Python 3 vezave za systemd ii systemd 237-3ubuntu10.42 amd64 sistemski upravitelj sistema in storitev-ys iv 3ubuntu10.42 amd64 sistemski in servisni upravitelj - SysV povezave gaurav@ubuntu:~$
Če dobite podoben izhod, to pomeni systemd
je nameščen v vašem sistemu.
Če ni nameščen, ga lahko namestite na naslednji način.
sudo apt-pridobi posodobitev
sudo apt-get install systemd
Če je nameščen in se napaka še vedno pojavlja, ga poskusite znova namestiti z naslednjim ukazom.
sudo apt-get install --reinstall systemd
To bo rešilo vašo težavo z namestitvijo systemd
uporabnost.
Zaključek
V tej vadnici smo se naučili popraviti »systemctl: ukaz ni najden«. Varno lahko sklepamo, da z uporabo storitev
ukaz namesto systemctl
je dobra ideja in zelo dobro rešuje težavo. Z lahkoto lahko uporabimo storitev
po razumevanju ilustrativnih primerov, prikazanih v vadnici.