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 SysV
sa 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.