วิธีแก้ไขข้อผิดพลาด "ไม่พบคำสั่ง Systemctl" ใน Linux

การแก้ไขอย่างรวดเร็วเพื่อแก้ไขปัญหาด้วยคำสั่ง 'systemctl' และการแนะนำทางเลือกอื่นที่มีประสิทธิภาพ

systemctl เป็นยูทิลิตี้ที่สำคัญในระบบนิเวศของ Linux เป็นเรื่องปกติมากที่คุณอาจพบปัญหาข้อผิดพลาด "systemctl: command not found" เมื่อคุณพยายามเรียกใช้ systemctl สั่งการ. กรณีนี้อาจไม่ใช่กรณีของการแจกจ่าย Linux ทั้งหมด แต่คุณอาจพบข้อผิดพลาดนี้เมื่อคุณใช้การแจกจ่าย Linux เวอร์ชันเก่าซึ่งไม่สนับสนุน systemctl สั่งการ.

ปัญหาที่เกิดขึ้นกับคุณเป็นปัญหาทั่วไปและสามารถแก้ไขได้ง่าย ดังนั้น อย่ากังวลไปเลย เพียงแค่อ่านบทช่วยสอนฉบับสมบูรณ์เพื่อค้นหาวิธีแก้ไขที่ง่ายและรวดเร็ว

เราจะพยายามทำความเข้าใจปัญหาก่อนแล้วจึงแก้ไข

เจาะลึก systemctl และ systemd

เนื่องจากข้อผิดพลาดมีการอ้างอิงถึง systemctl คำสั่ง จะเป็นการดีถ้ารู้พื้นฐานของคำสั่งนี้เพื่อทำความเข้าใจการแก้ไขข้อผิดพลาดนี้ให้ดีขึ้น

systemctl เป็นโปรแกรมอรรถประโยชน์บรรทัดคำสั่งที่ Linux นำเสนอ ซึ่งใช้ตรวจสอบและควบคุมยูทิลิตี้บรรทัดคำสั่งอื่นชื่อ 'systemd'. นอกจากนี้ยังตรวจสอบและควบคุมตัวจัดการระบบพร้อมกับ 'systemd' คุณประโยชน์.

ไวยากรณ์ทั่วไป:

systemctl [ตัวเลือก] [ชื่อ]

systemd เป็นชุดของ daemons ไลบรารีและยูทิลิตี้ที่ควบคุมโปรแกรมที่ทำงานเมื่อระบบของคุณบูทขึ้น systemd ยังจัดการเพื่อเริ่มต้นงานที่สำคัญเช่นการเริ่มบันทึกกิจกรรมของระบบ

ยูทิลิตีนี้ทำหน้าที่เป็นยูทิลิตีการจัดการส่วนกลางสำหรับระบบปฏิบัติการบน Linux ส่วนใหญ่ถ้าไม่ใช่ทั้งหมด

สาเหตุของข้อผิดพลาด

สาเหตุที่เป็นไปได้มากที่สุดสำหรับข้อผิดพลาดนี้อาจเป็นเพราะคุณใช้ Linux เวอร์ชันเก่ากว่า รุ่นเก่าหลายรุ่นใช้ เริ่มต้น SysV แทน systemd คุณประโยชน์.

systemd ยูทิลิตี้นี้ไม่มีอยู่ใน Linux เวอร์ชันก่อนหน้า เนื่องจากเป็นส่วนเพิ่มเติมล่าสุดในตะกร้าของยูทิลิตี้ที่ Linux มีให้ systemctl เข้ากันได้กับการทำงานและตรวจสอบกับ systemd ยูทิลิตี้และจะไม่ทำงานกับการกำหนดค่าก่อนหน้านี้เช่น SysVในนั้น หรือ พุ่งพรวด.

หากคุณไม่ได้ใช้ systemdข้อผิดพลาดนี้คาดว่าจะเกิดขึ้น มันง่ายและตรงไปตรงมาเช่นนั้น

คุณอาจพบข้อผิดพลาดนี้ด้วยวิธีต่อไปนี้

gaurav@ubuntu:~$ sudo systemctl start ufw [sudo] รหัสผ่านสำหรับ gaurav: sudo: systemctl: ไม่พบคำสั่ง gaurav@ubuntu:~$ 

ที่นี่ เราพยายามเริ่ม Ubuntu Fire Wall (ufw) ใช้ systemctl คำสั่งและพบข้อผิดพลาด "systemctl: ไม่พบคำสั่ง"

ดังนั้น จะทำอย่างไรถ้าคุณไม่ต้องการเปลี่ยนการกระจาย Linux ปัจจุบันของคุณซึ่งใช้ยูทิลิตี้การจัดการส่วนกลางอื่นนอกเหนือจาก systemd? เรามีวิธีแก้ไขด่วนให้คุณ ซึ่งจะช่วยให้คุณเก็บการแจกจ่าย Linux ปัจจุบันของคุณไว้ รวมทั้งแก้ไขข้อผิดพลาดในเวลาไม่นาน

ให้เราสังเกตการแก้ไขตอนนี้

แก้ไขข้อผิดพลาด "systemctl: command not found"

สุดท้ายนี้ ให้เราดูวิธีแก้ปัญหาของปัญหาที่เป็นปัญหาหลังจากวิเคราะห์สาเหตุและข้อเท็จจริงพื้นฐานเกี่ยวกับปัญหาแล้ว

แก้ไข 1: การแทนที่ systemctl กับ บริการ สั่งการ

การแก้ไขข้อผิดพลาดที่เป็นปัญหาอย่างง่ายคือการใช้ บริการ คำสั่งแทนข้อผิดพลาดที่ก่อให้เกิด systemctl สั่งการ.

บริการ คำสั่งช่วยในการเรียกใช้ SystemV init สคริปต์ที่ใช้โดยลีนุกซ์รุ่นเก่า หากคุณไม่ต้องการติดตั้ง systemd ยูทิลิตี้บนระบบของคุณ การแก้ไขนี้จะได้ผลสำหรับคุณอย่างแน่นอน

คุณสามารถเริ่ม รีสตาร์ท หรือหยุดบริการและ daemons บนการแจกจ่าย Linux ของคุณโดยใช้ บริการ สั่งการ.

ดิ บริการ คำสั่งและ systemctl ฟังก์ชั่นคำสั่งในลักษณะเดียวกัน ข้อแตกต่างเพียงอย่างเดียวที่นี่คือความเข้ากันได้ของคำสั่งกับยูทิลิตี้ที่รับผิดชอบในการรันระบบของคุณอย่างสง่างาม

ให้เราดู บริการ คำสั่งพร้อมภาพประกอบ

ไวยากรณ์ทั่วไป:

บริการ sudo [ชื่อบริการ] [การกระทำ]

ในไวยากรณ์ข้างต้น the [หนังบู๊] พื้นที่อาจมีการกระทำเช่น เริ่ม, หยุด, เริ่มต้นใหม่ หรือ สถานะ.

เราจะเรียกใช้คำสั่งเดียวกันเพื่อเริ่ม ufw บริการโดยใช้ บริการ สั่งการ.

sudo service ufw start

เอาท์พุต:

gaurav@ubuntu:~$ sudo service ufw start gaurav@ubuntu:~$ sudo service ufw status ● ufw.service - Uncomplicated firewall Loaded: โหลดแล้ว (/lib/systemd/system/ufw.service; enable; vendor preset: enab Active: ใช้งาน (ออก) ตั้งแต่วันจันทร์ 2020-09-28 11:22:34 IST; 1 ชั่วโมง 5 นาทีที่แล้ว เอกสาร: man:ufw(8) กระบวนการ: 333 ExecStart=/lib/ufw/ufw-init เริ่มเงียบ (code=exited, status =0/SU Main PID: 333 (code=exited, status=0/SUCCESS) 28 ก.ย. 11:22:34 ubuntu systemd[1]: เริ่มต้นไฟร์วอลล์ที่ไม่ซับซ้อน คำเตือน: มีการหมุนเวียนรายการบันทึกตั้งแต่ยูนิตเริ่มทำงาน เอาต์พุตบันทึกคือ ไม่สมบูรณ์

ที่นี่ บริการ ใช้คำสั่งแทน systemctl คำสั่งและทำงานได้ดีอย่างแน่นอน

มาดูอีกตัวอย่างหนึ่งของ บริการ คำสั่งให้เข้าใจถูกต้อง

บริการ sudo apache2 เริ่ม

เอาท์พุต:

gaurav@ubuntu:~$ sudo service สถานะ apache2 ● apache2.service - โหลดเซิร์ฟเวอร์ Apache HTTP แล้ว: โหลดแล้ว (/lib/systemd/system/apache2.service; เปิดใช้งาน; ที่ตั้งไว้ล่วงหน้าของผู้ขาย: Drop-In: /lib/systemd/system/ apache2.service.d └─apache2-systemd.conf Active: ใช้งานอยู่ (ทำงาน) ตั้งแต่วันจันทร์ 2020-09-28 11:22:47 IST; 1h 16 นาทีที่แล้ว กระบวนการ: 1172 ExecStart=/usr/sbin/apachectl start (code= ออก, status=0/SUCCE Main PID: 1248 (apache2) งาน: 55 (limit: 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 กันยายน 11:22:43 ubuntu systemd[1]: การเริ่มเซิร์ฟเวอร์ Apache HTTP... 28 กันยายน 11:22:47 ubuntu apachectl[1172] ]: AH00112: คำเตือน: DocumentRoot [/var/www 28 กันยายน 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: ไม่สามารถตรวจจับได้อย่างน่าเชื่อถือ 28 กันยายน 11:22:47 ubuntu systemd[1]: เริ่ม Apache HTTP เซิร์ฟเวอร์ gaurav@ubuntu:~$ 

เราใช้ บริการ คำสั่งเพื่อเริ่มยูทิลิตี้ apache2 ใช้ สถานะ ตัวเลือกด้วย บริการ คำสั่งจะแสดงสถานะปัจจุบันของบริการ เราจะได้รายละเอียดว่าทำงานอยู่หรือตายไปแล้ว (ไม่ใช้งาน)

ให้เราใช้ หยุด การดำเนินการเพื่อหยุดบริการ apache2 โดยใช้ บริการ สั่งการ.

gaurav@ubuntu:~$ sudo service apache2 stop gaurav@ubuntu:~$ sudo service apache2 status lines 1--1...skiping... ● apache2.service - Apache HTTP Server Loaded: โหลดแล้ว (/lib/systemd/ system/apache2.service; เปิดใช้งาน; ค่าที่ตั้งไว้ล่วงหน้าของผู้ขาย: เปิดใช้งาน) ดรอปอิน: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: ไม่ทำงาน (ไม่ทำงาน) ตั้งแต่วันจันทร์ 2020-09-28 12 :42:06 น.; 1 วินาทีที่แล้ว กระบวนการ: 4928 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS) กระบวนการ: 1172 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS) Main PID : 1248 (code=exited, status=0/SUCCESS) 28 กันยายน 11:22:43 ubuntu systemd[1]: กำลังเริ่มต้น Apache HTTP Server... 28 กันยายน 11:22:47 ubuntu apachectl[1172]: AH00112: คำเตือน : DocumentRoot [/var/www/html] ไม่มีอยู่ 28 กันยายน 11:22:47 ubuntu apachectl[1172]: AH00558: apache2: ไม่สามารถระบุชื่อโดเมนแบบเต็มของเซิร์ฟเวอร์ได้อย่างน่าเชื่อถือ โดยใช้ ::1 ตั้งค่า 'S Sep 28 11:22:47 ubuntu systemd[1]: เริ่มเซิร์ฟเวอร์ Apache HTTP

จากตัวอย่างโดยละเอียดที่อธิบายข้างต้น เราสามารถสรุปว่าเราสามารถใช้คำสั่งนี้แทนคำสั่ง systemctl คำสั่งควบคุมและตรวจสอบ daemons และบริการอื่นๆ ภายใต้การแจกจ่าย Linux

แก้ไข 2: กำลังตรวจหา systemd บรรจุุภัณฑ์

บางครั้งอาจเป็นกรณีที่มีเพียง systemd การติดตั้งแพ็คเกจอาจแก้ไขปัญหาได้ ขั้นแรก คุณต้องตรวจสอบสถานะการติดตั้งของ systemd แพ็คเกจในระบบของคุณ

ใช้คำสั่งต่อไปนี้เพื่อตรวจสอบแพ็คเกจในระบบของคุณ

sudo dpkg -l | grep systemd

ถ้า systemd ติดตั้งยูทิลิตี้แล้ว คุณจะได้ผลลัพธ์ที่คล้ายคลึงกันดังที่แสดงด้านล่าง

gaurav@ubuntu:~$ sudo dpkg -l | grep systemd [sudo] รหัสผ่านสำหรับ gaurav: ii dbus-user-session 1.12.2-1ubuntu1.2 amd64 ระบบส่งข้อความระหว่างกระบวนการอย่างง่าย (systemd - การรวมผู้ใช้) ii libnss-systemd: amd64 237-3ubuntu10.42 โมดูล amd64 nss ที่ให้ไดนามิก ความละเอียดชื่อผู้ใช้และกลุ่ม ii libpam-systemd:amd64 237-3ubuntu10.42 amd64 ระบบและผู้จัดการบริการ - โมดูล PAM ii libsystemd0:amd64 237-3ubuntu10.42 ไลบรารียูทิลิตี้ระบบ amd64 ii libsystemd0:i386 237-3ubuntu10.42 ไลบรารียูทิลิตี้ systemd i386 ii networkd-dispatcher 1.7-0ubuntu3.3 บริการ Dispatcher ทั้งหมดสำหรับการเปลี่ยนแปลงสถานะการเชื่อมต่อ systemd-networkd ri python3-systemd 234-1build1 amd64 Python 3 การผูกสำหรับ systemd ii systemd 237-3ubuntu10.42 ระบบ amd64 และผู้จัดการบริการ ii systemd-sysv 237- 3ubuntu10.42 ระบบ amd64 และตัวจัดการบริการ - ลิงก์ SysV gaurav@ubuntu:~$ 

ถ้าได้ผลลัพธ์แบบนี้แสดงว่า systemd ถูกติดตั้งบนระบบของคุณ

หากยังไม่ได้ติดตั้ง คุณสามารถติดตั้งได้ด้วยวิธีต่อไปนี้

sudo apt-get update
sudo apt-get ติดตั้ง systemd

หากติดตั้งแล้วและยังคงมีข้อผิดพลาดอยู่ ให้ลองติดตั้งใหม่โดยใช้คำสั่งต่อไปนี้

sudo apt-get install --ติดตั้ง systemd . อีกครั้ง

นี้จะแก้ปัญหาของคุณโดยการติดตั้ง systemd คุณประโยชน์.

บทสรุป

เราเรียนรู้วิธีแก้ไข “ไม่พบคำสั่ง systemctl:” ในบทช่วยสอนนี้ เราสามารถสรุปได้อย่างปลอดภัยว่าการใช้ บริการ คำสั่งแทน systemctl เป็นความคิดที่ดีและแก้ไขปัญหาได้เป็นอย่างดี เราสามารถใช้ .ได้อย่างง่ายดาย บริการ คำสั่งหลังจากเข้าใจตัวอย่างภาพประกอบที่แสดงในบทช่วยสอน