วิธีฆ่ากระบวนการใน Linux

เราทุกคนต่างเคยมีช่วงเวลาที่คอมพิวเตอร์ของเราทำงานช้าเป็นพิเศษและกระตุกในการทำงานแม้กระทั่งงานพื้นฐาน ใน 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:

  10 อันดับ Linux Cloud Storage สำหรับผู้ใช้ขั้นสูง

ปล

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

ป.ล. | grep <ชื่อกระบวนการ>

เพื่อทำให้สิ่งต่าง ๆ ง่ายขึ้น มีคำสั่งแยกต่างหากที่แสดงเฉพาะ ID กระบวนการของกระบวนการที่กำลังทำงานใด ๆ ที่คุณจำเป็นต้องรู้ ไวยากรณ์ที่จะใช้คำสั่ง pidof คือ:

pidof <ชื่อกระบวนการ>

ยุติกระบวนการโดยใช้คำสั่ง kill

เมื่อคุณระบุ ID กระบวนการของกระบวนการที่คุณต้องการยุติแล้ว คำสั่งทั่วไปที่ใช้เพื่อยุติโปรแกรมบนระบบ Linux ของคุณคือคำสั่ง kill ไวยากรณ์ที่จะใช้คำสั่ง kill คือ:

ฆ่า <สัญญาณ>

พารามิเตอร์ เป็นทางเลือก และคำสั่ง kill จะส่งสัญญาณ SIGTERM (15) ตามค่าดีฟอลต์ คุณสามารถส่งสัญญาณอื่นใดโดยใช้ค่าตัวเลขหรือชื่อสัญญาณจริงจากตารางด้านบน

จบกระบวนการโดยใช้คำสั่ง 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

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

สูงสุด

ทำความเข้าใจผลลัพธ์:

ผลลัพธ์หลักของคำสั่งด้านบนแบ่งออกเป็นคอลัมน์ซึ่งได้แก่:

  • PID – แสดง ID กระบวนการของกระบวนการที่กำลังทำงานอยู่
  • ผู้ใช้ – แสดงเจ้าของกระบวนการ
  • PR – แสดงค่าลำดับความสำคัญของกระบวนการที่กำหนดโดยระบบปฏิบัติการ
  • NI – แสดงค่าที่ดีซึ่งเหมือนกับการกำหนดค่าที่เว้นวรรคโดยผู้ใช้เพื่อควบคุมลำดับความสำคัญของงานด้วยตนเอง
  • VIRT – แสดงจำนวนหน่วยความจำเสมือนที่ใช้โดยกระบวนการ
  • RES – แสดงจำนวนหน่วยความจำกายภาพที่ใช้โดยกระบวนการ
  • SHR – แสดงจำนวนหน่วยความจำที่ใช้ร่วมกันโดยกระบวนการอื่น
  • S – แสดงสถานะปัจจุบันของกระบวนการซึ่งสามารถ:
    • D – การนอนหลับอย่างต่อเนื่อง
    • R – วิ่ง
    • S – นอน
    • ที – หยุด
    • Z – ซอมบี้
      วิธีการติดตั้งเบราว์เซอร์ Vivaldi บน Linux
  • % CPU – แสดงจำนวน CPU ที่ใช้โดยกระบวนการเป็นเปอร์เซ็นต์
  • %MEM – แสดงจำนวน RAM ที่ใช้โดยกระบวนการเป็นเปอร์เซ็นต์
  • TIME+ – แสดงเวลาทำงานทั้งหมดของกระบวนการ
  • คำสั่ง – แสดงว่าคำสั่งใดถูกเรียกใช้สำหรับกระบวนการ
  • หากคุณไม่ทราบ 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’ เพื่อค้นหาชื่อกระบวนการ คลิกชื่อกระบวนการที่คุณต้องการยุติ แล้วคลิก “สิ้นสุดกระบวนการ”

      วิธีฟังพอดแคสต์บนเดสก์ท็อป Linux ด้วย CPod

    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 ของคุณ หากคุณประสบปัญหาใด ๆ ในขณะที่ใช้เครื่องมือเหล่านี้เพื่อหยุดกระบวนการ โปรดแจ้งให้เราทราบในความคิดเห็นด้านล่าง

    เรื่องล่าสุด

    x