Paano Ayusin ang Error sa "Systemctl Command Not Found" sa Linux

Isang mabilis na pag-aayos upang malutas ang isyu gamit ang command na 'systemctl' at pagpapakilala ng ilang mahusay na alternatibo dito

systemctl bilang isang mahalagang utility sa Linux ecosystem, napakakaraniwan na maaari kang makatagpo ng problemang “systemctl: command not found” error kapag sinubukan mong patakbuhin ang systemctl utos. Maaaring hindi ito ang kaso para sa lahat ng distribusyon ng Linux, ngunit malamang na makatagpo ka ng error na ito kapag gumagamit ka ng mas lumang bersyon ng pamamahagi ng Linux na hindi sumusuporta sa systemctl utos.

Ang problemang nangyayari sa iyo ay isang pangkaraniwang isyu at madaling maayos. Kaya, huwag mag-alala at pumunta lamang sa kumpletong tutorial upang makahanap ng mabilis at madaling pag-aayos.

Susubukan naming maunawaan muna ang problema at pagkatapos ay ayusin ito.

Pananaw sa systemctl at sistemad

Bilang ang error ay may reference sa systemctl command, makabubuting malaman ang mga pangunahing kaalaman ng utos na ito upang mas maunawaan ang pag-aayos para sa error na ito.

systemctl ay isang command-line utility na inaalok ng Linux, na ginagamit upang subaybayan at kontrolin ang isa pang command-line utility na pinangalanang 'sistemad'. Sinusuri at kinokontrol din nito ang system manager kasama ang 'sistemad' kagamitan.

Pangkalahatang syntax:

systemctl [pagpipilian] [pangalan]

sistemad ay isang bundle ng mga daemon, aklatan at mga utility na kumokontrol sa mga program na tumatakbo kapag nag-boot ang iyong system. sistemad namamahala din upang simulan ang isang mahalagang trabaho tulad ng pagsisimula ng isang journal ng aktibidad ng system.

Gumagana ang utility na ito bilang central management utility para sa karamihan kung hindi lahat ng mga operating system na nakabatay sa Linux.

Ang sanhi ng pagkakamali

Ang pinaka-malamang na dahilan ng error na ito ay maaaring gumagamit ka ng mas lumang bersyon ng pamamahagi ng Linux. Marami sa mga mas lumang bersyon ang gumagamit ng SysV init sa halip na ang sistemad kagamitan.

sistemad Ang utility ay wala sa mga nakaraang bersyon ng Linux dahil ito ay isang kamakailang karagdagan sa basket ng mga utility na ibinigay ng Linux. systemctl ay katugma sa paggana at pagsubaybay sa sistemad utility at mabibigo na gumana sa mga nakaraang configuration tulad ng SysVsa loob o Uumpisahan.

Kung hindi ka gumagamit sistemad, pagkatapos ay inaasahan ang error na ito. Ito ay kasing simple at prangka.

Maaaring makatagpo ka ng error na ito sa sumusunod na paraan.

gaurav@ubuntu:~$ sudo systemctl simulan ang ufw [sudo] password para sa gaurav: sudo: systemctl: command not found gaurav@ubuntu:~$ 

Dito, sinubukan naming simulan ang Ubuntu Fire Wall (ufw) gamit ang systemctl command at nakatagpo ng error na "systemctl: command not found".

Kaya, ano ang gagawin ngayon kung hindi mo nais na baguhin ang iyong kasalukuyang pamamahagi ng Linux na gumagamit ng ilang iba pang sentral na utility sa pamamahala maliban sa sistemad? Well, mayroon kaming mabilisang pag-aayos para sa iyo na magbibigay-daan sa iyong panatilihin ang iyong kasalukuyang pamamahagi ng Linux pati na rin ayusin ang iyong error sa lalong madaling panahon.

Tingnan natin ang pag-aayos ngayon.

Pag-aayos ng error na "systemctl: command not found".

Sa wakas, tingnan natin ngayon ang solusyon ng problemang pinag-uusapan pagkatapos suriin ang mga sanhi at pangunahing katotohanan tungkol sa problema.

Ayusin 1: Pagpapalit systemctl kasama serbisyo utos

Ang isang simpleng pag-aayos para sa error na pinag-uusapan ay ang paggamit ng serbisyo utos sa halip na ang sanhi ng error systemctl utos.

serbisyo nakakatulong ang command sa pagpapatakbo ng SystemV init script na ginagamit ng mas lumang mga pamamahagi ng Linux. Kung hindi mo gustong i-install ang sistemad utility sa iyong system, ang pag-aayos na ito ay tiyak na gagana para sa iyo.

Maaari mong simulan, i-restart o ihinto ang anumang mga serbisyo at daemon sa iyong pamamahagi ng Linux gamit ang serbisyo utos.

Ang serbisyo utos at ang systemctl command function sa parehong paraan, ang pagkakaiba lang dito ay ang compatibility ng command sa mga utility na responsable para sa magandang pagpapatakbo ng iyong system.

Tingnan natin ang serbisyo utos na may ilustrasyon.

Pangkalahatang Syntax:

sudo service [service_name] [action]

Sa syntax sa itaas, ang [aksyon] space ay maaaring magsama ng mga aksyon tulad ng simulan, huminto, i-restart o katayuan.

Magpapatakbo kami ng parehong command upang simulan ang ufw serbisyo gamit ang serbisyo utos.

sudo service ufw start

Output:

gaurav@ubuntu:~$ sudo service ufw start gaurav@ubuntu:~$ sudo service ufw status ● ufw.service - Uncomplicated firewall Loaded: load (/lib/systemd/system/ufw.service; enabled; vendor preset: enab Active: aktibo (umalis) mula Mon 2020-09-28 11:22:34 IST; 1h 5min ang nakalipas Docs: man:ufw(8) Proseso: 333 ExecStart=/lib/ufw/ufw-init magsimulang tahimik (code=exited, status =0/SU Main PID: 333 (code=exited, status=0/ SUCCESS) Set 28 11:22:34 ubuntu systemd[1]: Sinimulan ang Uncomplicated firewall. Babala: Ang journal ay pinaikot mula noong nagsimula ang unit. Ang output ng log ay hindi kumpleto

Dito, ang serbisyo command ay ginagamit sa halip na ang systemctl utos at ito ay gumana nang maayos.

Tingnan natin ang isa pang halimbawa ng serbisyo utos upang magkaroon ng wastong pag-unawa dito.

sudo service apache2 start

Output:

gaurav@ubuntu:~$ sudo service apache2 status ● apache2.service - Ang Apache HTTP Server Loaded: load (/lib/systemd/system/apache2.service; enabled; vendor preset: Drop-In: /lib/systemd/system/ apache2.service.d └─apache2-systemd.conf Aktibo: aktibo (tumatakbo) simula Mon 2020-09-28 11:22:47 IST; 1h 16min ang nakalipas Proseso: 1172 ExecStart=/usr/sbin/apachectl start (code= lumabas, status=0/SUCCE Pangunahing PID: 1248 (apache2) Mga Gawain: 55 (limitasyon: 4456) CGroup: /system.slice/apache2.service ├─1248 /usr/sbin/apache2 -k start ├─1249 /usr/ sbin/apache2 -k start └─1250 /usr/sbin/apache2 -k start Set 28 11:22:43 ubuntu systemd[1]: Starting The Apache HTTP Server... Set 28 11:22:47 ubuntu apachectl[1172] ]: AH00112: Babala: DocumentRoot [/var/www Set 28 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: Hindi mapagkakatiwalaan det Set 28 11:22:47 ubuntu systemd[1]: Server. gaurav@ubuntu:~$ 

Ginamit namin ang serbisyo command upang simulan ang apache2 utility. Gamit ang katayuan opsyon kasama ang serbisyo ipapakita ng command ang kasalukuyang katayuan ng serbisyo. Makukuha namin ang mga detalye kung ito ay tumatakbo o patay na (hindi aktibo).

Gamitin natin ngayon ang huminto aksyon upang ihinto ang serbisyo ng apache2 gamit ang serbisyo utos.

gaurav@ubuntu:~$ sudo service apache2 stop gaurav@ubuntu:~$ sudo service apache2 status lines 1--1...laktawan... ● apache2.service - Ang Apache HTTP Server Loaded: load (/lib/systemd/ system/apache2.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: inactive (dead) since Mon 2020-09-28 12 :42:06 IST; 1s ang nakalipas Proseso: 4928 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/ SUCCESS) Proseso: 1172 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/ SUCCESS) Main PID : 1248 (code=exited, status=0/ SUCCESS) Set 28 11:22:43 ubuntu systemd[1]: Sinisimulan Ang Apache HTTP Server... Set 28 11:22:47 ubuntu apachectl[1172]: AH00112: Babala : DocumentRoot [/var/www/html] ay hindi umiiral Set 28 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: Hindi mapagkakatiwalaang matukoy ang ganap na kwalipikadong domain name ng server, gamit ang ::1. Itakda ang 'S Set 28 11:22:47 ubuntu systemd[1]: Sinimulan Ang Apache HTTP Server.

Mula sa mga detalyadong halimbawa na ipinaliwanag sa itaas, maaari nating tapusin na maaari nating gamitin ang utos na ito sa halip na ang systemctl utos na kontrolin at subaybayan ang iba pang mga daemon at serbisyo sa ilalim ng pamamahagi ng Linux.

Ayusin 2: Pagsusuri para sa sistemad pakete

Minsan ito ay maaaring ang kaso na lamang ang sistemad Maaaring ayusin ng pag-install ng package ang problema. Una, kailangan mong suriin ang katayuan ng pag-install ng sistemad package sa iyong system.

Gamitin ang sumusunod na command upang suriin ang package sa iyong system.

sudo dpkg -l | grep systemd

Kung ang sistemad Naka-install na ang utilty makakakuha ka ng isang output na katulad ng ipinapakita sa ibaba.

gaurav@ubuntu:~$ sudo dpkg -l | grep systemd [sudo] password para sa gaurav: ii dbus-user-session 1.12.2-1ubuntu1.2 amd64 simpleng interprocess messaging system (systemd --user integration) ii libnss-systemd:amd64 237-3ubuntu10.42 amd64 nss module na nagbibigay ng dynamic na nss module resolution ng user at pangalan ng grupo ii libpam-systemd:amd64 237-3ubuntu10.42 amd64 system at service manager - PAM module ii libsystemd0:amd64 237-3ubuntu10.42 amd64 systemd utility library ii libsystemd0:i386 237-3ubuntu systemd0:i386 237-3ubuntu systemd ii networkd-dispatcher 1.7-0ubuntu3.3 lahat ng serbisyo ng Dispatcher para sa systemd-networkd na mga pagbabago sa status ng koneksyon ri python3-systemd 234-1build1 amd64 Python 3 bindings para sa systemd ii systemd 237-3ubuntu10.42 amd64 system at service manager ii systemd-sys-v 3ubuntu10.42 amd64 system at service manager - Mga link ng SysV gaurav@ubuntu:~$ 

Kung nakakuha ka ng isang output na katulad nito, nangangahulugan ito na sistemad ay naka-install sa iyong system.

Kung hindi ito naka-install, maaari mo itong i-install sa sumusunod na paraan.

sudo apt-get update
sudo apt-get install systemd

Kung ito ay naka-install at nagpapatuloy pa rin ang error, pagkatapos ay subukang muling i-install ito gamit ang sumusunod na command.

sudo apt-get install --reinstall systemd

Malulutas nito ang iyong problema sa pamamagitan ng pag-install ng sistemad kagamitan.

Konklusyon

Natutunan naming ayusin ang "systemctl: command not found" sa tutorial na ito. Ligtas nating mahihinuha na ang paggamit ng serbisyo utos sa halip na ang systemctl ay isang magandang ideya at niresolba nang husto ang isyu. Madali nating magagamit ang serbisyo utos pagkatapos maunawaan ang mga halimbawang nagpapakita sa tutorial.