ลด 50% ทุกแผน มีเวลาจำกัด เริ่มต้นที่ $2.48/mo
เหลือเวลาอีก 7 นาที
เซิร์ฟเวอร์และระบบปฏิบัติการ

วิธีแก้ไข systemctl: ไม่พบคำสั่งผิดพลาดบน Ubuntu

นิค ซิลเวอร์ By นิค ซิลเวอร์ อ่าน 7 นาที อัปเดตเมื่อวันที่ 20 กุมภาพันธ์ 2025
วิธีแก้ไข systemctl: ไม่พบคำสั่ง

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

ด้วยคำสั่ง คุณสามารถจัดการบริการระบบ ดูสถานะ เริ่มหรือหยุดบริการ และเปิดใช้งานและปิดใช้งานบริการเหล่านี้เมื่อเริ่มต้นระบบ ค่อนข้างมีประโยชน์ใช่ไหม? แต่ถ้าไม่พบหรือรู้จักคำสั่ง systemctl คุณจะต้องเผชิญกับ “sudo:systemctl: ไม่พบคำสั่ง” ข้อผิดพลาด.

เรามาพูดถึงความหมายของข้อผิดพลาด “systemctl: ไม่พบคำสั่ง” สาเหตุต่างๆ ที่ทำให้คุณพบข้อผิดพลาดนี้ และวิธีแก้ไขข้อผิดพลาดนี้

systemctl: ไม่พบคำสั่งหมายถึงอะไร

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

โดยพื้นฐานแล้ว ไม่ได้ติดตั้งแพ็คเกจ systemd หรือ distro หรือเวอร์ชัน Linux ของคุณไม่ได้ใช้ systemd แต่จะใช้ระบบการจัดการบริการแบบเก่าเช่น init.d ความเป็นไปได้อีกอย่างหนึ่งคือตัวแปรสภาพแวดล้อม PATH ไม่รวมไดเร็กทอรีที่ systemctl ตั้งอยู่ ซึ่งหมายความว่าเชลล์ของคุณหาไม่พบ

ตอนนี้คุณมีความคิดว่าอาจผิดปกติกับระบบของคุณซึ่งนำไปสู่ข้อผิดพลาด “ systemctl: ไม่พบคำสั่ง” มาดูกันว่าคุณสามารถตรวจสอบได้อย่างไรว่าปัญหาของคุณอยู่ที่ใดและจะแก้ไขได้อย่างไร

การแก้ไข systemctl: ไม่พบคำสั่งผิดพลาด

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

1. การตรวจสอบว่าระบบของคุณใช้ systemd หรือไม่

เนื่องจาก Ubuntu systemctl สามารถใช้งานได้ก็ต่อเมื่อคุณติดตั้งแพ็คเกจ systemd เราจะตรวจสอบก่อนว่าระบบของคุณควรใช้ systemd หรือไม่โดยการรันคำสั่งต่อไปนี้:

ps -p 1 -o comm=

หรือคุณสามารถตรวจสอบเวอร์ชันของ systemd ด้วยคำสั่งต่อไปนี้:

systemd --version

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

หากคุณเห็นระบบการเริ่มต้นแบบเก่า เช่น Upstart หรือ SysVinit และต้องการสลับไปใช้ systemd เพื่อใช้ systemctl ให้ทำตามขั้นตอนเหล่านี้:

1. ติดตั้ง systemctl โดยการติดตั้ง systemd โดยใช้คำสั่งต่อไปนี้:

sudo apt install systemd-sysv

2. รีบูตระบบของคุณโดยรันคำสั่งนี้:

sudo reboot

3. ตรวจสอบว่าระบบของคุณกำลังใช้ systemd:

ps -p 1 -o comm=

ผลลัพธ์ควรเป็น systemd ทันที

2. ตรวจสอบให้แน่ใจว่า systemd ได้รับการติดตั้งอย่างถูกต้อง

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

โปรดทราบว่าหากคุณใช้ Ubuntu เวอร์ชันขั้นต่ำ เช่น คอนเทนเนอร์ Docker หรืออินสแตนซ์คลาวด์ systemd อาจไม่ได้รับการติดตั้งตามค่าเริ่มต้น หากต้องการติดตั้ง systemctl ผ่านการติดตั้ง systemd ให้รันคำสั่งต่อไปนี้:

sudo apt update
sudo apt install systemd

เมื่อติดตั้งแล้ว ให้ตรวจสอบว่าคำสั่ง systemctl พร้อมใช้งานหรือไม่

3. ตรวจสอบ PATH ของ systemctl

ปัญหาทั่วไปประการหนึ่งเกี่ยวกับข้อผิดพลาดไม่พบ systemctl คือสามารถติดตั้ง systemctl ได้ แต่ไม่ได้อยู่ใน PATH ของระบบ หากต้องการตรวจสอบว่าไบนารี systemd มีอยู่ในไดเร็กทอรีทั่วไปที่ไบนารีนั้นอยู่หรือไม่ เช่น /bin, /usr/bin หรือ /usr/local/bin คุณสามารถใช้คำสั่งต่อไปนี้:

which systemctl

หากพบ systemctl ในไดเรกทอรีใด ๆ ของคุณที่แสดงอยู่ใน PATH คุณควรได้รับผลลัพธ์ดังนี้:

/usr/bin/systemctl

หากไม่พบ systemctl ในไดเร็กทอรีใดๆ ใน PATH คำสั่ง which จะไม่ส่งคืนสิ่งใดเลย

อย่างไรก็ตาม systemctl อาจยังไม่ทำงานแม้ว่าจะพบในไดเร็กทอรีของคุณก็ตาม เนื่องจาก systemctl อาจอยู่ในไดเร็กทอรีที่ไม่รวมอยู่ใน PATH ในสถานการณ์นี้ คุณจะต้องตรวจสอบว่าไดเร็กทอรีที่ systemctl ตั้งอยู่นั้นเป็นส่วนหนึ่งของระบบของคุณหรือไม่โดยใช้คำสั่งต่อไปนี้:

echo $PATH

ผลลัพธ์ควรเป็นดังนี้:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

ตอนนี้สิ่งที่คุณต้องทำคือตรวจสอบว่าไดเร็กทอรีที่ systemctl อยู่ (ซึ่งคุณได้รับจากคำสั่ง which) รวมอยู่ในไดเร็กทอรีที่แสดงอยู่ในเอาต์พุตจากคำสั่ง echo $PATH หรือไม่

หากไดเรกทอรีของ systemctl ไม่รวมอยู่ในเอาต์พุตของ echo $PATH คุณจะต้องเพิ่มลงในตัวแปร PATH ของคุณ ในการดำเนินการนี้ คุณจะต้องเรียกใช้คำสั่งต่อไปนี้:

สำหรับ ผู้ใช้ Bash Shellให้เปิดไฟล์ ~/.bashrc ในโปรแกรมแก้ไขข้อความ:

nano ~/.bashrc

เพิ่มบรรทัดต่อไปนี้ที่ท้ายไฟล์:

export PATH=$PATH:/usr/bin

/usr/bin เป็นไดเร็กทอรีทั่วไปที่ systemctl อยู่ในตัวอย่างนี้

ตอนนี้ ให้บันทึกและปิดไฟล์โดยกด CTRL + X จากนั้น Y เพื่อยืนยัน และ Enter เพื่อบันทึก

สำหรับ ผู้ใช้ Zsh, เปิดไฟล์ ~/.zshrc ในโปรแกรมแก้ไขข้อความ:

nano ~/.zshrc

เพิ่มบรรทัดต่อไปนี้ที่ท้ายไฟล์:

export PATH=$PATH:/usr/bin

/usr/bin เป็นไดเร็กทอรีทั่วไปที่ systemctl อยู่ในตัวอย่างนี้

ตอนนี้ ให้บันทึกและปิดไฟล์โดยกด CTRL + X จากนั้น Y เพื่อยืนยัน และ Enter เพื่อบันทึก

เมื่อคุณทำตามขั้นตอนข้างต้นเสร็จแล้ว ให้ใช้คำสั่ง echo $PATH เพื่อตรวจสอบว่าไดเร็กทอรีของ systemctl ของคุณถูกเพิ่มลงใน PATH ของคุณหรือไม่ ตอนนี้คุณควรจะสามารถเรียกใช้ systemctl ได้โดยไม่ต้องพบกับข้อผิดพลาด “ systemctl: ไม่พบคำสั่ง”

4. การติดตั้ง systemd ใหม่

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

sudo apt purge systemd
sudo apt install systemd

จากนั้นรีบูทระบบของคุณด้วยคำสั่งนี้:

sudo reboot

ตรวจสอบว่า systemctl ทำงานหรือไม่

5. การตรวจสอบ systemd ได้รับการกำหนดค่าอย่างถูกต้อง

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

sudo dpkg-reconfigure systemd

6. ระบบย่อย Windows ที่ล้าสมัยสำหรับ Linux (WSL)

หากคุณใช้ Ubuntu อยู่ WSL (ระบบย่อย Windows สำหรับ Linux) คุณควรทราบว่า WSL เวอร์ชันเก่า เช่น WSL 1 ไม่รองรับ systemctl โดยกำเนิด ดังนั้นไม่ว่าคุณจะใช้โปรแกรมแก้ไขใดก่อนหน้านี้ คุณจะไม่สามารถเรียกใช้ systemctl ได้

หากคุณต้องการใช้ประโยชน์จากฟังก์ชั่นของ systemctl คุณจะต้องอัปเกรดเป็น WSL 2 ซึ่งได้รับการรองรับ systemd ที่ดีกว่า หากคุณไม่แน่ใจว่าคุณกำลังใช้ WSL หรือไม่ คุณสามารถตรวจสอบได้โดยใช้คำสั่งต่อไปนี้:

uname -a

หากผลลัพธ์กล่าวถึง WSL นั่นเป็นสาเหตุที่คุณเห็นข้อผิดพลาด “systemctl: command not found”

7. การใช้ sudo Service เป็นทางเลือกแทน systemctl

หากคุณพบข้อผิดพลาด "systemctl: ไม่พบคำสั่ง" เนื่องจากระบบของคุณไม่ได้ใช้ systemd คุณสามารถใช้คำสั่ง sudo service เพื่อจัดการบริการได้ คำสั่งนี้ใช้ได้กับระบบเริ่มต้นรุ่นเก่า เช่น SysVinit หรือ Upstart สิ่งนี้มีประโยชน์สำหรับระบบ Ubuntu ที่ใช้สคริปต์เริ่มต้นแทน systemd

ตัวอย่างเช่น หากต้องการเริ่มบริการ คุณจะต้องเรียกใช้:

sudo service <service_name> start

ความคิดสุดท้าย

systemd และยูทิลิตีบรรทัดคำสั่ง systemctl ได้เข้ามาแทนที่ระบบ init รุ่นเก่าอื่นๆ เช่น SysVinit และ Upstart แม้ว่า systemd อาจไม่ใช่ system tea ของทุกคนเนื่องจากมีการออกแบบที่ใหญ่โตและปรัชญาที่ไม่ใช่ Unix แต่โดยทั่วไปแล้ว systemd ยังคงถูกมองว่าเป็นตัวเลือกที่แพร่หลาย หวังว่าคุณจะสามารถแก้ไขคำสั่ง systemctl ของคุณที่ไม่มีข้อผิดพลาดได้ เนื่องจากการไม่สามารถใช้ยูทิลิตีบรรทัดคำสั่งของ systemd ได้เป็นการจำกัดความสามารถอย่างรุนแรง

คำถามที่พบบ่อย

systemctl คืออะไรและ systemctl: ไม่พบคำสั่งหมายถึงอะไร

systemctl เป็นเครื่องมือบรรทัดคำสั่งที่ใช้จัดการบริการในระบบ Linux ที่ใช้ systemd เช่น Ubuntu ข้อผิดพลาด “systemctl: ไม่พบคำสั่ง” เกิดขึ้นเมื่อเครื่องมือไม่พร้อมใช้งานหรือไม่สามารถเข้าถึงได้ โดยทั่วไปเนื่องจากระบบไม่ได้ใช้ systemd หรือไม่ได้ติดตั้งแพ็คเกจ systemd

systemctl มีอยู่ใน Ubuntu ทุกเวอร์ชันหรือไม่

ไม่ systemctl ไม่สามารถใช้ได้กับ Ubuntu ทุกเวอร์ชัน systemctl เป็นส่วนหนึ่งของระบบ systemd init ซึ่งเป็นค่าเริ่มต้นใน Ubuntu เวอร์ชันใหม่ส่วนใหญ่ (ตั้งแต่ 15.04 เป็นต้นไป) เวอร์ชันเก่ากว่าหรือการติดตั้งขั้นต่ำบางอย่างอาจใช้ระบบ init อื่น เช่น SysVinit หรือ Upstart แทน

แบ่งปัน

เพิ่มเติมจากบล็อก

อ่านต่อ

แอพที่โฮสต์เองที่ดีที่สุดที่คุณสามารถเรียกใช้ด้วย Cosmos Cloud ภาพหน้าปกพร้อมแผงแอพรอบแดชบอร์ดของ Cosmos
เซิร์ฟเวอร์และระบบปฏิบัติการ

แอพที่โฮสต์เองที่ดีที่สุดที่คุณสามารถรันด้วย Cosmos Cloud: ไฟล์ สื่อ รหัสผ่าน ระบบอัตโนมัติ และอื่นๆ อีกมากมาย!

บางทีคุณอาจตั้งค่า Cosmos Cloud ไว้แล้วและตอนนี้ต้องการดูว่าแอปใดที่เข้ากันได้ดีกับมัน หรือบางทีคุณอาจยังไม่ได้ตัดสินใจเลือก Cosmos และแค่อยากจะดูว่ามันเหมาะกับงานของคุณแค่ไหน

นิค ซิลเวอร์นิค ซิลเวอร์ อ่าน 16 นาที
Portainer vs Cosmos Cloud สำหรับการจัดการแอพ Docker ครอบคลุมด้วยไดอะแกรมการตั้งค่าไฮบริดและตัวเลือกนีออนเทียบกับบล็อกการเข้าถึง
เซิร์ฟเวอร์และระบบปฏิบัติการ

Portainer vs Cosmos Cloud: เหมาะที่สุดสำหรับการจัดการแอพ Docker

หากคุณรู้จัก Docker อยู่แล้ว และเพียงต้องการวิธีที่สะอาดกว่าในการรันแอปสแต็กที่กำลังเติบโต ต่อไปนี้เป็นคำตอบสั้นๆ สำหรับ Portainer กับ Cosmos Cloud Portainer เป็นตัวเลือกที่ดีกว่าสำหรับไดเร็ค

นิค ซิลเวอร์นิค ซิลเวอร์ อ่าน 14 นาที
กราฟิกฟีเจอร์ Cosmos Cloud vs CasaOS vs Umbrel แสดงเส้นทางที่โฮสต์ด้วยตนเองสามเส้นทางภายในโลกเครือข่ายคลาวด์แบบนามธรรมแห่งเดียว
เซิร์ฟเวอร์และระบบปฏิบัติการ

Cosmos Cloud กับ CasaOS กับ Umbrel: แพลตฟอร์มที่โฮสต์เองใดที่เหมาะกับการตั้งค่าของคุณ?

คำตอบสั้นๆ ก็คือ CasaOS ยังคงเป็นจุดเริ่มต้นที่ง่ายที่สุด Umbrel ให้ความรู้สึกที่สะอาดตาที่สุด และ Cosmos Cloud ก็สมเหตุสมผลมากขึ้นเมื่อคุณต้องการควบคุม Doma ที่เข้มงวดยิ่งขึ้น

นิค ซิลเวอร์นิค ซิลเวอร์ อ่าน 11 นาที

พร้อมที่จะใช้งานหรือยัง? จาก $2.48/เดือน

คลาวด์อิสระ ตั้งแต่ปี 2008 AMD EPYC, NVMe, 40 Gbps คืนเงินภายใน 14 วัน