เราทุกคนต่างเคยมีช่วงเวลาที่คอมพิวเตอร์ของเราทำงานช้าเป็นพิเศษและกระตุกในการทำงานแม้กระทั่งงานพื้นฐาน ใน Windows คุณมีเพียงตัวจัดการงานของ Windows เพื่อตรวจสอบและฆ่ากระบวนการที่ไม่สำคัญนักแต่ใช้หน่วยความจำจำนวนมหาศาล อย่างไรก็ตาม ใน Linux คุณมีคลังคำสั่งและเครื่องมือ GUI ทั้งหมดเพื่อจัดการงานเหล่านี้ ในบทความนี้ เราจะแสดงวิธีบรรทัดคำสั่งอย่างง่าย (CLI) รวมถึงวิธี GUI สำหรับวิธีฆ่ากระบวนการใน Linux
ยุติกระบวนการใน Linux (2023)
แต่ก่อนที่เราจะดำดิ่งสู่โลกแห่งการจัดการกระบวนการใน Linux เรามาทำความเข้าใจกันก่อนว่ากระบวนการคืออะไร และ ID กระบวนการในระบบ Linux คืออะไร
กระบวนการใน Linux คืออะไร
ใน Linux แต่ละอินสแตนซ์ของโปรแกรมที่กำลังทำงานอยู่เรียกว่า “กระบวนการ” ในขณะที่ไฟล์เรียกทำงานแต่ละไฟล์เรียกว่าโปรแกรม เมื่อโปรแกรมใดๆ ถูกดำเนินการ กระบวนการจะถูกสร้างขึ้นและแต่ละกระบวนการจะได้รับหมายเลขประจำตัว 5 หลักที่ไม่ซ้ำกัน ซึ่งเรียกว่า “รหัสกระบวนการ” เมื่อกระบวนการดำเนินการเสร็จสิ้นหรือถูกยกเลิกอย่างถาวร ID กระบวนการจะถูกกำหนดให้กับกระบวนการถัดไปในบรรทัด
ฆ่ากระบวนการผ่าน Command Line ใน Linux
แม้ว่าบางครั้งการใช้เทอร์มินัลอาจดูน่ากลัวเมื่อเทียบกับการใช้เครื่องมือ GUI สำหรับงานพื้นฐาน แต่การจัดการกระบวนการต่างๆ จะง่ายขึ้นมากเมื่อคุณเข้าใจคำสั่งและตัวเลือกต่างๆ
สัญญาณบอกเลิก
เมื่อคุณพยายามฆ่ากระบวนการจาก GUI หรือ CLI ใน Linux เคอร์เนลจะส่งสัญญาณบอกเลิกไปยังกระบวนการ กระบวนการทำงานตามนั้น ขึ้นอยู่กับสัญญาณที่ได้รับ แต่ละสัญญาณเหล่านี้ถูกกำหนดเป็นหมายเลขเฉพาะเพื่อให้โปรแกรมเข้าใจได้อย่างรวดเร็ว มีสัญญาณบอกเลิกหลายประเภท แต่เราได้อธิบายเฉพาะสัญญาณที่จำเป็นไว้ที่นี่:
SignalNumeric ValueDescriptionSIGHUP1ย่อมาจาก ‘Signal Hangup’
จะถูกส่งเมื่อปิดเทอร์มินัลSIGINT2ย่อมาจาก ‘Signal Interrupt’
จะถูกส่งเมื่อผู้ใช้ยุติกระบวนการSIGKILL9ย่อมาจาก ‘Signal Kill’
ถูกส่งเมื่อคุณต้องการออกจากกระบวนการทันทีSIGTERM15ย่อมาจาก ‘Signal Termination’
จะถูกส่งเมื่อคุณต้องการยุติกระบวนการและปล่อยทรัพยากรที่ใช้ไป SIGSTOP19 – สำหรับ ARM, x86
17 – สำหรับอัลฟ่า
23 – สำหรับ MIPS
24 – สำหรับ PA-RISCIt ย่อมาจาก ‘ Signal Stop’
จะถูกส่งเมื่อคุณต้องการหยุดกระบวนการชั่วคราวและดำเนินการต่อในภายหลัง สัญญาณที่ใช้บ่อยที่สุดคือ SIGKILL (9) และ SIGTERM (15)
ระบุรหัสกระบวนการ
ก่อนที่คุณจะยุติกระบวนการ คุณจำเป็นต้องทราบรายละเอียดบางอย่างของกระบวนการ เช่น ID กระบวนการ เวลาทำงาน เป็นต้น หากต้องการทราบรายละเอียดของกระบวนการ ให้ใช้คำสั่ง ps:
ปล
ด้วยคำสั่ง ps คุณต้องค้นหากระบวนการโดยการเลื่อนและจดชื่อ ซึ่งอาจยุ่งยาก คุณสามารถใช้คำสั่ง grep กับคำสั่ง ps ในไปป์ไลน์แทนได้ ดังที่แสดงด้านล่าง:
ป.ล. | grep <ชื่อกระบวนการ>
เพื่อทำให้สิ่งต่าง ๆ ง่ายขึ้น มีคำสั่งแยกต่างหากที่แสดงเฉพาะ ID กระบวนการของกระบวนการที่กำลังทำงานใด ๆ ที่คุณจำเป็นต้องรู้ ไวยากรณ์ที่จะใช้คำสั่ง pidof คือ:
pidof <ชื่อกระบวนการ>
ยุติกระบวนการโดยใช้คำสั่ง kill
เมื่อคุณระบุ ID กระบวนการของกระบวนการที่คุณต้องการยุติแล้ว คำสั่งทั่วไปที่ใช้เพื่อยุติโปรแกรมบนระบบ Linux ของคุณคือคำสั่ง kill ไวยากรณ์ที่จะใช้คำสั่ง kill คือ:
ฆ่า <สัญญาณ>
พารามิเตอร์
จบกระบวนการโดยใช้คำสั่ง pkill
หากคุณรู้สึกว่าการค้นหารหัสกระบวนการไม่สะดวก คุณสามารถใช้คำสั่ง pkill ค้นหากระบวนการที่ตรงกับรูปแบบแล้วฆ่าทิ้ง ไวยากรณ์ที่จะใช้คำสั่ง pkill คือ:
pkill <ตัวเลือก> <แบบแผน>
ตัวเลือกทั่วไปบางส่วนในการจับคู่กับคำสั่ง pkill คือ:
OptionDescription-nเลือกเฉพาะกระบวนการล่าสุดที่ตรงกับกระบวนการ id-uเลือกกระบวนการที่เป็นของผู้ใช้เฉพาะ-xSelects กระบวนการที่ตรงกับรูปแบบทุกประการ
นี่เป็นสิ่งสำคัญอย่างยิ่งเมื่อผู้ใช้หลายคนกำลังทำงานบนอินสแตนซ์ที่แตกต่างกันของโปรแกรมเดียวกันในระบบเดียวกัน และหนึ่งในอินสแตนซ์เริ่มมีลักษณะการทำงานที่ไม่คาดคิด ตัวอย่างเช่น ในภาพหน้าจอด้านล่าง เรากำลังฆ่าอินสแตนซ์ “gedit” ของผู้ใช้ ‘intel’ โดยใช้คำสั่ง pkill ใน Linux:
pkill -u intel gedit
ยุติกระบวนการโดยใช้คำสั่ง killall
คำสั่ง killall ทำงานคล้ายกับคำสั่ง kill แต่จะฆ่ากระบวนการทั้งหมดที่ตรงกับชื่อกระบวนการโดยไม่คำนึงถึงผู้ใช้ ตามค่าเริ่มต้น จะส่งสัญญาณ SIGTERM หากไม่ได้ระบุไว้เป็นอย่างอื่น สิ่งที่น่าสนใจที่ควรทราบคือคำสั่ง killall ไม่สามารถฆ่าตัวเองได้ แต่สามารถยุติอินสแตนซ์อื่นของคำสั่ง killall ได้ ไวยากรณ์ที่จะใช้คำสั่ง killall คือ:
killall <ตัวเลือก> <ชื่อกระบวนการ>
ตัวเลือกบางส่วนที่จะจับคู่กับคำสั่ง killall คือ:
OptionDescription-rแปลชื่อ process_name เป็นรูปแบบ regex แล้วฆ่ากระบวนการที่ตรงกับรูปแบบ-ukill กระบวนการที่ระบุซึ่งเป็นของเจ้าของที่ระบุ-oKills กระบวนการที่ระบุที่เก่ากว่า (เริ่มก่อน) กว่าเวลาที่กำหนด-yKills กระบวนการที่ระบุอายุน้อยกว่า ( เริ่มหลังจาก) เวลาที่กำหนด
คำสั่ง killall มีประโยชน์ในการยุติชุดของกระบวนการเดียวกันหรือแม้แต่กระบวนการทั้งหมดที่เป็นของเจ้าของเฉพาะราย ในตัวอย่างของเรา เรากำลังฆ่ากระบวนการทั้งหมดของ “การนอนหลับเป็นเวลา 500 วินาที” โดยใช้คำสั่ง killall ใน Linux:
killall -v นอนหลับ
ยุติกระบวนการ Linux โดยใช้คำสั่ง top/ htop
วิธีการฆ่ากระบวนการนี้มีประโยชน์เมื่อคุณไม่รู้ว่ากระบวนการใดใช้ทรัพยากรสูงสุด ในทั้งสองคำสั่ง คุณสามารถนำทางผ่านกระบวนการที่กำลังทำงานอยู่ทั้งหมดหรือแม้แต่กระบวนการของซอมบี้ และสามารถสิ้นสุดกระบวนการเหล่านั้นได้อย่างรวดเร็ว หากต้องการใช้คำสั่งด้านบนเพื่อตรวจสอบทรัพยากรของคุณ ให้ใช้ไวยากรณ์ในเทอร์มินัล:
สูงสุด
ทำความเข้าใจผลลัพธ์:
ผลลัพธ์หลักของคำสั่งด้านบนแบ่งออกเป็นคอลัมน์ซึ่งได้แก่:
- D – การนอนหลับอย่างต่อเนื่อง
- R – วิ่ง
- S – นอน
- ที – หยุด
- Z – ซอมบี้
หากคุณไม่ทราบ ID กระบวนการของงานที่คุณต้องการฆ่า ให้เลื่อนดูรายการโดยใช้ปุ่มลูกศรหรือค้นหาชื่อกระบวนการในตารางกระบวนการใน Linux
หากต้องการค้นหาชื่อกระบวนการ ให้กด ‘L’ บนแป้นพิมพ์แล้วพิมพ์ชื่อกระบวนการที่คุณต้องการค้นหา เมื่อคุณพบกระบวนการชั่วร้าย ให้กด ‘k’ บนแป้นพิมพ์เพื่อฆ่ากระบวนการ ตอนนี้ ป้อน ID กระบวนการ หรือปล่อยไว้ที่กระบวนการที่ไฮไลท์อยู่ในปัจจุบัน แล้วกด ‘ENTER’ ถัดไป ป้อนสัญญาณสิ้นสุด จากนั้นกด ‘ENTER’ เพื่อหยุดโปรแกรม หากต้องการกลับไปที่เทอร์มินัล ให้กด ‘q’ บนแป้นพิมพ์
แม้ว่าคำสั่งด้านบนจะแสดงรายละเอียดเช่น ID กระบวนการ การใช้หน่วยความจำ และอื่นๆ สำหรับกระบวนการที่กำลังทำงานอยู่ทั้งหมด คำสั่งนี้ไม่เหมาะสำหรับผู้เริ่มต้นเนื่องจากไม่แสดงการแมปคีย์ใดๆ หรือวิธีใช้งาน ในทางกลับกัน คำสั่ง htop มีอินเทอร์เฟซที่เป็นมิตรต่อผู้ใช้มากกว่า แม้ว่าจะเป็นเครื่องมือบรรทัดคำสั่งก็ตาม นอกจากนี้ยังแสดงรายละเอียดทั้งหมดในมุมมองแยกต่างหาก ดังนั้นจึงไม่เกะกะหน้าต่างเทอร์มินัล ไม่ได้ติดตั้งไว้ล่วงหน้าใน distros ส่วนใหญ่ และคุณต้องใช้คำสั่งต่อไปนี้เพื่อติดตั้ง htop ใน Linux:
sudo apt ติดตั้ง -y htop
หากต้องการใช้ htop เพื่อจัดการกระบวนการใน Linux ให้ใช้คำสั่งด้านล่าง:
ท็อป
หากต้องการปิดโปรแกรม ให้ไปที่ชื่อกระบวนการที่คุณต้องการยกเลิก กด ‘F9’ จากนั้นกด Enter หากคุณต้องการค้นหาและปิดโปรแกรมใดๆ ให้กด ‘F3’ บนแป้นพิมพ์ พิมพ์ชื่อแล้วกด Enter ชื่อโปรเซสจะถูกเน้น กด F9 แล้วกด Enter บนแป้นพิมพ์เพื่อยุติโปรเซส
ฆ่ากระบวนการผ่าน System Monitor ใน Linux
หากคุณรู้สึกว่าวิธีการแบบบรรทัดคำสั่งนั้นยากสำหรับคุณ คุณสามารถใช้เครื่องมือตรวจสอบระบบในตัวที่มีอยู่ใน Linux ทุกรุ่น หากต้องการเรียนรู้วิธีการทำงาน ให้เปิดเครื่องมือตรวจสอบระบบจากเมนูแอปพลิเคชันและทำตามขั้นตอนด้านล่าง
1. เมื่อเครื่องมือตรวจสอบระบบเปิดขึ้น คุณจะเห็นแท็บสามแท็บด้านบนชื่อ — กระบวนการ ทรัพยากร และระบบไฟล์ หากต้องการจัดการกระบวนการของคุณ ให้ไปที่แท็บ “กระบวนการ” ที่นี่ คุณจะเห็นกระบวนการที่กำลังทำงานอยู่ทั้งหมดของคุณ กด ‘CTRL+F’ เพื่อค้นหาชื่อกระบวนการ คลิกชื่อกระบวนการที่คุณต้องการยุติ แล้วคลิก “สิ้นสุดกระบวนการ”
2. จากนั้นคุณจะได้รับข้อความยืนยันว่าคุณต้องการสิ้นสุดกระบวนการหรือไม่ ไปข้างหน้าและคลิกที่ปุ่ม “สิ้นสุดกระบวนการ” สีแดงขนาดใหญ่เพื่อฆ่ากระบวนการใน Linux
คำถามที่พบบ่อย
ฉันจะหยุดกระบวนการทั้งหมดใน Linux ได้อย่างไร
หากคุณต้องการหยุดกระบวนการทั้งหมด (ยกเว้นเชลล์ล็อกอิน, init และกระบวนการเฉพาะเคอร์เนล) สำหรับผู้ใช้เฉพาะใน Linux ให้ใช้คำสั่ง pkill หรือคำสั่ง killall ตามไวยากรณ์:
pkill -u <ชื่อผู้ใช้>
killall -u <ชื่อผู้ใช้>
หากคุณต้องการฆ่าทุกกระบวนการสำหรับผู้ใช้ทุกคนรวมถึงระบบเริ่มต้น ให้กดปุ่ม ‘ALT + Prt Sc + o’ บนแป้นพิมพ์
ตกลงที่จะสิ้นสุดกระบวนการหรือไม่?
เมื่อคุณปิดกระบวนการเบื้องหลังที่ไม่จำเป็นหรือกระบวนการของผู้ใช้ที่ใช้หน่วยความจำระบบจำนวนมาก คุณจะเพิ่มทรัพยากรซึ่งตอนนี้สามารถนำไปใช้โดยกระบวนการอื่นได้ แต่ก่อนที่จะปิดกระบวนการใดๆ ตรวจสอบให้แน่ใจว่าคุณไม่ได้ฆ่ากระบวนการที่สำคัญของระบบปฏิบัติการ
กระบวนการพื้นหลังใน Linux คืออะไร?
ใน Linux กระบวนการเบื้องหลังคือกระบวนการที่สามารถทำงานได้โดยไม่ต้องใช้เชลล์อินสแตนซ์หรือการแทรกแซงของผู้ใช้ สามารถดูได้โดยใช้คำสั่งใดก็ได้ – top, htop, ps เป็นต้น
กระบวนการซอมบี้คืออะไร?
กระบวนการที่ถูกฆ่าโดยผู้ใช้แต่ยังคงครอบครองหน่วยความจำเรียกว่ากระบวนการซอมบี้
CTRL + Z ทำอะไรใน Linux
เมื่อคุณใช้ CTRL + Z ใน Linux จะส่งสัญญาณ SIGTSTP ซึ่งจะหยุดกระบวนการชั่วคราวและส่งในเบื้องหลัง เมื่อกระบวนการอยู่ในสถานะหยุดชั่วคราวในเบื้องหลัง คุณจะไม่สามารถฆ่ากระบวนการได้จนกว่าจะนำกลับเข้ามาสู่เบื้องหน้า
ฆ่ากระบวนการใน Linux ได้อย่างง่ายดาย
การฆ่ากระบวนการกัดหน่วยความจำเป็นงานสำคัญที่ผู้ใช้ทุกคนควรเรียนรู้ ในบทความนี้ เราได้แสดงทั้งวิธีบรรทัดคำสั่ง รวมถึงคำสั่งอย่าง killall และ pkill ตลอดจนวิธี GUI เพื่อฆ่ากระบวนการใน Linux เรามีรายละเอียดวิธีการใช้เครื่องมือยอดนิยมเช่น top และ htop เพื่อจัดการกระบวนการบน Linux PC ของคุณ หากคุณประสบปัญหาใด ๆ ในขณะที่ใช้เครื่องมือเหล่านี้เพื่อหยุดกระบวนการ โปรดแจ้งให้เราทราบในความคิดเห็นด้านล่าง