Ātrs risinājums, lai atrisinātu problēmu, izmantojot komandu “systemctl”, un ieviešot dažas efektīvas alternatīvas tai
systemctl
Tā kā Linux ekosistēmā ir svarīga utilīta, ļoti bieži var rasties kļūda “systemctl: komanda nav atrasta”, mēģinot palaist systemctl
komandu. Tas var neattiekties uz visiem Linux izplatījumiem, taču jūs, iespējams, varat saskarties ar šo kļūdu, ja izmantojat vecāku Linux izplatīšanas versiju, kas neatbalsta systemctl
komandu.
Problēma, kas rodas jums, ir ļoti izplatīta problēma, un to var viegli novērst. Tāpēc neuztraucieties un vienkārši izejiet visu pamācību, lai atrastu ātru un vienkāršu risinājumu.
Vispirms mēģināsim izprast problēmu un pēc tam to novērst.
Ieskati par systemctl
un systemd
Tā kā kļūda ir saistīta ar atsauci uz systemctl
komandu, būtu labi zināt šīs komandas pamatus, lai labāk izprastu šīs kļūdas labojumu.
systemctl
ir Linux piedāvātā komandrindas utilīta, ko izmanto, lai uzraudzītu un kontrolētu vienu citu komandrindas utilītu ar nosaukumu "systemd
‘. Tā arī pārbauda un kontrolē sistēmas pārvaldnieku kopā ar "systemd
‘lietderība.
Vispārējā sintakse:
systemctl [opcija] [nosaukums]
systemd
ir dēmonu, bibliotēku un utilītu kopums, kas kontrolē programmas, kas darbojas, kad sistēma sāk darboties. systemd
izdodas arī uzsākt svarīgu darbu, piemēram, sākt sistēmas darbību žurnālu.
Šī utilīta darbojas kā centrālā pārvaldības utilīta lielākajai daļai, ja ne visām Linux balstītajām operētājsistēmām.
Kļūdas galvenais cēlonis
Visticamākais šīs kļūdas iemesls varētu būt tas, ka izmantojat vecāku Linux izplatīšanas versiju. Daudzas no vecākajām versijām izmanto SysV init
vietā systemd
lietderība.
systemd
utilīta iepriekšējās Linux versijās nav pieejama, jo tā ir nesens Linux nodrošinātā utilītu groza papildinājums. systemctl
ir savietojams, lai darbotos un uzraudzītu ar systemd
utilīta un nedarbosies ar iepriekšējām konfigurācijām, piemēram, SysV
tajā
vai Iesācējs
.
Ja jūs neizmantojat systemd
, tad šī kļūda ir sagaidāma. Tas ir tikpat vienkārši un saprotami.
Ar šo kļūdu varat saskarties tālāk norādītajā veidā.
gaurav@ubuntu:~$ sudo systemctl start ufw [sudo] parole gaurav: sudo: systemctl: komanda nav atrasta gaurav@ubuntu:~$
Šeit mēs mēģinājām palaist Ubuntu ugunsmūri (ufw
) izmantojot systemctl
komandu un radās kļūda “systemctl: komanda nav atrasta”.
Tātad, ko darīt tagad, ja nevēlaties mainīt savu pašreizējo Linux izplatīšanu, kas izmanto kādu citu centrālās pārvaldības utilītu, izņemot systemd
? Mums ir ātrs risinājums, kas ļautu jums saglabāt pašreizējo Linux izplatīšanu, kā arī ātri novērst kļūdu.
Novērosim labojumu tagad.
Kļūdas “systemctl: komanda nav atrasta” labošana
Visbeidzot, apskatīsim attiecīgās problēmas risinājumu pēc problēmas cēloņu un pamatfaktu analīzes.
1. labojums: nomaiņa systemctl
ar apkalpošana
komandu
Vienkāršs attiecīgās kļūdas labojums ir izmantot apkalpošana
komandu, nevis kļūdas cēloni systemctl
komandu.
apkalpošana
komanda palīdz palaist SystemV init
skripts, ko izmanto vecāki Linux izplatījumi. Ja nevēlaties instalēt systemd
utilīta jūsu sistēmā, šis labojums noteikti noderēs jums.
Varat sākt, restartēt vai apturēt jebkurus pakalpojumus un dēmonus savā Linux izplatīšanā, izmantojot apkalpošana
komandu.
The apkalpošana
komandu un systemctl
komandu funkciju tādā pašā veidā, vienīgā atšķirība šeit ir komandas saderība ar utilītprogrammām, kas ir atbildīgas par jūsu sistēmas graciozu darbību.
Ļaujiet mums redzēt apkalpošana
komanda ar ilustrāciju.
Vispārējā sintakse:
sudo pakalpojums [pakalpojuma_nosaukums] [darbība]
Iepriekš minētajā sintaksē [darbība]
vieta var ietvert tādas darbības kā sākt
, stop
, restartēt
vai statusu
.
Mēs izpildīsim to pašu komandu, lai sāktu ufw
pakalpojumu, izmantojot apkalpošana
komandu.
sudo pakalpojums ufw start
Izvade:
gaurav@ubuntu:~$ sudo service ufw start gaurav@ubuntu:~$ sudo service ufw status ● ufw.service — nesarežģīts ugunsmūris Ielādēts: ielādēts (/lib/systemd/system/ufw.service; iespējots; piegādātāja iepriekš iestatīts: enab Active: aktīvs (iziets) kopš pirmdienas 2020-09-28 11:22:34 IST; pirms 1h 5min Dokumenti: man:ufw(8) Process: 333 ExecStart=/lib/ufw/ufw-init start kluss (kods=exited, status =0/SU Galvenais PID: 333 (kods=exited, status=0/SUCCESS) Sep 28 11:22:34 ubuntu systemd[1]: Started Nesarežģīts ugunsmūris. Brīdinājums: žurnāls ir pagriezts kopš ierīces palaišanas. Žurnāla izvade ir nepilnīgs
Lūk, apkalpošana
vietā tiek izmantota komanda systemctl
komandu, un tas izdevās pilnīgi labi.
Apskatīsim vēl vienu piemēru apkalpošana
komandu, lai iegūtu pareizu izpratni par to.
sudo pakalpojuma apache2 sākums
Izvade:
gaurav@ubuntu:~$ sudo service apache2 statuss ● apache2.service — Apache HTTP serveris ielādēts: ielādēts (/lib/systemd/system/apache2.service; iespējots; piegādātāja iepriekš iestatīts: Drop-In: /lib/systemd/system/ apache2.service.d └─apache2-systemd.conf Aktīvs: aktīvs (darbojas) kopš pirmdienas 2020-09-28 11:22:47 IST; pirms 1h 16min Process: 1172 ExecStart=/usr/sbin/apachectl start (kods= iziets, status=0/SUCCE Galvenais PID: 1248 (apache2) Uzdevumi: 55 (ierobežojums: 4456) CGroup: /system.slice/apache2.service ├─1248 /usr/sbin/apache2 -k start ├─r1249 sbin/apache2 -k sākuma ]: AH00112: Brīdinājums: DocumentRoot [/var/www Sep 28 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: Nevarēja droši noteikt Sep 28 11:22:47 ubuntu systemd[ Apache Serveris gaurav@ubuntu:~$
Mēs esam izmantojuši apkalpošana
komandu, lai palaistu apache2 utilītu. Izmantojot statusu
opcija ar apkalpošana
komanda parādīs pakalpojuma pašreizējo statusu. Mēs saņemsim informāciju par to, vai tas darbojas vai ir miris (neaktīvs).
Ļaujiet mums tagad izmantot stop
darbība, lai apturētu apache2 pakalpojumu, izmantojot apkalpošana
komandu.
gaurav@ubuntu:~$ sudo pakalpojuma apache2 apstāšanās gaurav@ubuntu:~$ sudo pakalpojuma apache2 statusa rindas 1--1...izlaižot... ● apache2.service — Apache HTTP serveris ielādēts: ielādēts (/lib/systemd/ system/apache2.service; iespējots; piegādātāja sākotnējais iestatījums: iespējots) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Aktīvs: neaktīvs (miris) kopš 2020. gada 28. gada 28. pirm. 12. :42:06 IST; Pirms 1 s Process: 4928 ExecStop=/usr/sbin/apachectl stop (kods=exited, status=0/SUCCESS) Process: 1172 ExecStart=/usr/sbin/apachectl start (kods=exited, status=0/SUCCESS) Galvenais PID : 1248 (kods=exited, status=0/SUCCESS) Sep 28 11:22:43 ubuntu systemd[1]: tiek startēts Apache HTTP serveris... 28.septembris 11:22:47 ubuntu apachectl[1172]: AH00112: Brīdinājums : DocumentRoot [/var/www/html] neeksistē Sep 28 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: Nevarēja droši noteikt servera pilnībā kvalificēto domēna nosaukumu, izmantojot ::1. Iestatīt 'S Sep 28 11:22:47 ubuntu systemd[1]: Started The Apache HTTP Server.
No iepriekš izskaidrotajiem detalizētajiem piemēriem mēs varam secināt, ka mēs varam izmantot šo komandu, nevis systemctl
komanda, lai kontrolētu un pārraudzītu citus dēmonus un pakalpojumus Linux izplatīšanā.
2. labojums: tiek pārbaudīts systemd
iepakojums
Dažkārt var gadīties, ka tikai systemd
pakotnes instalēšana var atrisināt problēmu. Pirmkārt, jums jāpārbauda instalēšanas statuss systemd
pakotni jūsu sistēmā.
Izmantojiet šo komandu, lai pārbaudītu pakotni savā sistēmā.
sudo dpkg -l | grep systemd
Ja systemd
utilītprogramma jau ir instalēta, jūs iegūsit izvadi, kas ir līdzīga kā parādīts zemāk.
gaurav@ubuntu:~$ sudo dpkg -l | grep systemd [sudo] parole gaurav: ii dbus-user-session 1.12.2-1ubuntu1.2 amd64 vienkārša starpprocesu ziņojumapmaiņas sistēma (systemd --user integrācija) ii libnss-systemd:amd64 237-3ubuntu10.42n dynamicsd6e modulis lietotāja un grupas nosaukuma izšķirtspēja ii libpam-systemd:amd64 237-3ubuntu10.42 amd64 sistēmas un pakalpojumu pārvaldnieks — PAM modulis ii libsystemd0:amd64 237-3ubuntu10.42 amd64 systemd utilītu bibliotēka ii libpam-systemd:amd64 2tubintu10.46 system2unsystem2. ii networkd-dispatcher 1.7-0ubuntu3.3 all Dispečera pakalpojums systemd-networkd savienojuma statusa izmaiņām ri python3-systemd 234-1build1 amd64 Python 3 saistījumi systemd ii systemd 237-3ubuntu10.42 amd64 sistēmai un 3-sysi4 sistēmai 2 3ubuntu10.42 amd64 sistēmas un pakalpojumu pārvaldnieks — SysV saites gaurav@ubuntu:~$
Ja saņemat līdzīgu izvadi, tas nozīmē, ka systemd
ir instalēts jūsu sistēmā.
Ja tas nav instalēts, varat to instalēt tālāk norādītajā veidā.
sudo apt-get atjauninājums
sudo apt-get install systemd
Ja tas ir instalēts un kļūda joprojām pastāv, mēģiniet to atkārtoti instalēt, izmantojot šo komandu.
sudo apt-get install --reinstall systemd
Tas atrisinās jūsu problēmu, instalējot systemd
lietderība.
Secinājums
Šajā apmācībā mēs iemācījāmies labot komandu “systemctl: komanda nav atrasta”. Mēs varam droši secināt, ka, izmantojot apkalpošana
komandu, nevis systemctl
ir laba ideja un ļoti labi atrisina problēmu. Mēs varam viegli izmantot apkalpošana
komandu pēc apmācībā parādīto ilustratīvo piemēru izpratnes.