ลด 50% ทุกแพลน เวลาจำกัด เริ่มต้นที่ $2.48/mo
เหลือ 7 นาที
Server และ OS

วิธีแก้ Error systemctl: Command Not Found บน Ubuntu

Nick Silver By Nick Silver อ่าน 7 นาที อัปเดต 20 ก.พ. 2025
วิธีแก้ปัญหา systemctl: command not found

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

ผ่านคำสั่งนี้ คุณสามารถจัดการบริการของระบบ ดูสถานะ เริ่มหรือหยุดการทำงาน รวมถึงเปิดหรือปิดใช้งานเมื่อบูตระบบได้ มีประโยชน์มากใช่ไหม? แต่ถ้าคำสั่ง systemctl ไม่ถูกพบหรือไม่เป็นที่รู้จัก คุณจะเจอกับ «sudo:systemctl: command not found» ข้อผิดพลาด

ดังนั้น เรามาพูดคุยเกี่ยวกับความหมายของข้อผิดพลาด "systemctl: command not found" เหตุผลที่หลากหลายว่าทำไมคุณถึงเผชิญกับข้อผิดพลาดนี้ และวิธีการแก้ไขข้อผิดพลาดนี้

systemctl: command not found หมายความว่าอะไร?

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

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

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

แก้ไขข้อผิดพลาด systemctl: Command Not Found

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

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

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

ps -p 1 -o comm=

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

systemd --version

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

หากระบบของคุณใช้ระบบ init แบบเก่าอย่าง 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 system คำสั่ง systemctl ควรใช้งานได้ถูกต้อง หากไม่เป็นเช่นนั้น แสดงว่าแพ็กเกจ systemd อาจหายไปหรือติดตั้งไม่ถูกต้อง

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

sudo apt update
sudo apt install systemd

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

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

ปัญหาที่พบบ่อยอีกอย่างของข้อผิดพลาด systemctl not found คือ systemctl อาจติดตั้งอยู่แล้ว แต่ไม่ได้อยู่ใน PATH ของระบบ หากต้องการตรวจสอบว่า systemd binaries มีอยู่ในไดเรกทอรีทั่วไปที่มักจะวางไว้ เช่น /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 variable โดยใช้คำสั่งต่อไปนี้:

สำหรับ ผู้ใช้ 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: command not found" อีกต่อไป

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

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

sudo apt purge systemd
sudo apt install systemd

จากนั้นรีบูตระบบด้วยคำสั่งนี้:

sudo reboot

ตรวจสอบว่า systemctl ทำงานได้ปกติหรือไม่

5. ตรวจสอบการตั้งค่า systemd ให้ถูกต้อง

บางครั้งปัญหาอาจเกิดจากการติดตั้ง systemd ที่ตั้งค่าไว้ไม่ถูกต้อง ซึ่งทำให้เกิดข้อผิดพลาด "systemctl: command not found" วิธีแก้ไขคือรันคำสั่งต่อไปนี้เพียงคำสั่งเดียว:

sudo dpkg-reconfigure systemd

6. Windows Subsystem for Linux (WSL) ที่ล้าสมัย

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

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

uname -a

หากผลลัพธ์แสดงคำว่า WSL นั่นคือสาเหตุที่คุณเห็นข้อผิดพลาด "systemctl: command not found"

7. ใช้ sudo service แทน systemctl

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

ตัวอย่างเช่น หากต้องการสตาร์ท service ให้รัน:

sudo service <service_name> start

บทสรุป

systemd และคำสั่ง systemctl ได้เข้ามาแทนที่ระบบ init รุ่นเก่าอย่าง SysVinit และ Upstart ไปเป็นที่เรียบร้อยแล้ว แม้ว่า systemd จะไม่ถูกใจทุกคนเนื่องจากการออกแบบแบบ monolithic และแนวทางที่ไม่สอดคล้องกับปรัชญา Unix แต่ก็ยังถือเป็นตัวเลือกหลักที่นิยมใช้กันมากที่สุด หวังว่าบทความนี้จะช่วยให้คุณแก้ปัญหา systemctl: command not found ได้ เพราะหากใช้ command-line utility ของ systemd ไม่ได้ ก็จะส่งผลให้การจัดการระบบทำได้อย่างจำกัดมาก

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

systemctl คืออะไรและ systemctl: Command Not Found หมายถึงอะไร

systemctl เป็นเครื่องมือ command-line สำหรับจัดการ service บนระบบ Linux ที่ใช้ systemd เช่น Ubuntu ข้อผิดพลาด "systemctl: command not found" เกิดขึ้นเมื่อเครื่องมือนี้ไม่พร้อมใช้งานหรือเข้าถึงไม่ได้ ซึ่งโดยทั่วไปมักเกิดจากระบบไม่ได้ใช้ systemd หรือยังไม่ได้ติดตั้ง package ของ systemd

systemctl ใช้ได้กับ Ubuntu ทุกเวอร์ชันหรือไม่?

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

แชร์

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

อ่านต่อ

ภาพปก Best Self-Hosted Apps You Can Run with Cosmos Cloud พร้อมแผงแอปรอบ dashboard ของ Cosmos
Server และ OS

แอป Self-Hosted ที่ดีที่สุดที่คุณรันได้บน Cosmos Cloud: ไฟล์ สื่อ รหัสผ่าน ระบบอัตโนมัติ และอื่นๆ!

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

Nick SilverNick Silver อ่าน 16 นาที
ภาพปก Portainer vs Cosmos Cloud for Managing Docker Apps พร้อมแผนภาพการตั้งค่าแบบ hybrid และบล็อก ops vs access สีนีออน
Server และ OS

Portainer กับ Cosmos Cloud: ตัวไหนเหมาะที่สุดสำหรับจัดการแอป Docker

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

Nick SilverNick Silver อ่าน 14 นาที
กราฟิก feature ของ Cosmos Cloud vs CasaOS vs Umbrel แสดงเส้นทาง self-hosted สามแบบในโลกเครือข่ายคลาวด์นามธรรม
Server และ OS

Cosmos Cloud vs CasaOS vs Umbrel: แพลตฟอร์ม Self-Hosted ตัวไหนเหมาะกับการตั้งค่าของคุณ?

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

Nick SilverNick Silver อ่าน 11 นาที

พร้อมติดตั้งหรือยัง? เริ่มต้น $2.48/เดือน

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