การแก้ไขอย่างรวดเร็วเพื่อแก้ไขปัญหาด้วยคำสั่ง '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
เป็นความคิดที่ดีและแก้ไขปัญหาได้เป็นอย่างดี เราสามารถใช้ .ได้อย่างง่ายดาย บริการ
คำสั่งหลังจากเข้าใจตัวอย่างภาพประกอบที่แสดงในบทช่วยสอน