Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

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

มีหลายวิธีที่สามารถใช้เพื่อฆ่ากระบวนการใน Linux บทแนะนำนี้จะสอนวิธีค้นหาและกำจัดกระบวนการที่เสียหาย

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

กระบวนการทั้งสองนี้ติดขัดและต้องการการแทรกแซงโดยเจ้าหน้าที่ เข้าสู่การควบคุมงาน มาดูวิธีฆ่ากระบวนการที่เสียหายกัน

มาดูคำสั่งกัน:

  • ด้านบน (และทำไม htop น่าจะดีกว่า)
  • ป.ล.
  • ฆ่า

บนสุด (ค้นหาและทำลาย)

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

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

เป็นกลุ่ม

เอาล่ะ ตอนนี้เรามีกระบวนการที่เราไม่สามารถโต้ตอบได้ตามปกติ มาวิ่งกัน บน . เอาต์พุตปกติไม่มีประโยชน์ ดังนั้นเราจะเรียกใช้ตัวกรอง

  • กด shift+l
  • พิมพ์ กลุ่ม
  • กด Enter
วิธีฆ่ากระบวนการใน Linux

ด้านบน

มีผลงานของเรา คุณจะสังเกตเห็นในบรรทัดแรก มันบอกเวลาทำงาน จำนวนผู้ใช้ และค่าเฉลี่ยโหลดของเรา คุณจะสังเกตเห็นว่ามีข้อมูลสำคัญอยู่ในคอลัมน์ ปกติทุกวันฉันกำลังดู S , %CPU และ TIME+ . หากกระบวนการอยู่ในสถานะ Z (ซอมบี้) ฉันรู้ที่จะฆ่ามัน หากกระบวนการมี CPU เกิน 100% แสดงว่ามีการโอเวอร์รันและอาจจำเป็นต้องถูกกำจัดด้วย หรือหากกระบวนการเกิดขึ้นสองสามวัน อาจถึงเวลาเริ่มต้นใหม่ แม้ว่านั่นอาจเป็นความหวาดระแวง และไม่จำเป็นในกรณีส่วนใหญ่

วันนี้เรากำลังดูบรรทัดที่สอง ล่าซอมบี้และค้นหาเด็กกำพร้า สำหรับตัวอย่างของเรา เราไม่มีกระบวนการซอมบี้ที่ทำงานอยู่ ดังนั้นเราจะกรองหากระบวนการ "2 หยุด"

  • กด o
  • ประเภท:S=T
วิธีฆ่ากระบวนการใน Linux

ตัวกรองด้านบน

ตอนนี้เรากรองเฉพาะกระบวนการใน S=T (state=stopped) ฟิลเตอร์ เราฆ่ามันได้ ขณะที่อยู่ด้านบน คุณสามารถกด k เข้าสู่กระบวนการ PID และกด Enter หากคุณกำลังวิ่งผ่าน คุณจะสังเกตเห็นว่าอาจใช้เวลาสักครู่กว่าจะสิ้นสุด ให้กด k . แทน อีกครั้ง ป้อน PID และเปลี่ยนสัญญาณเป็น 9 .

มันไม่สมบูรณ์แบบ แต่ถ้าคุณมีหน้าต่างด้านบนที่ทำงานเป็นหน้าต่างสถานะ แสดงว่าคุณอยู่ที่นั่นแล้ว คุณยังสามารถส่งสัญญาณฆ่าแทนสัญญาณหยุดได้

htop

ตกลงฉันจะยอมรับ ก็ไม่ต่างจากท็อปเท่าไหร่ ยกเว้นสี

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

htop

สีสันมากมาย

ป.ล.

PS สถานะกระบวนการ ยูทิลิตี้ดั้งเดิมที่น่ารักของเราสำหรับการดูข้อมูลกระบวนการในระบบของเรา เครื่องมือนี้อ่านจากไฟล์ใน /proc . ส่วนใหญ่ คุณจะใช้:

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

ปล.

  • -a , แสดงกระบวนการสำหรับผู้ใช้ทั้งหมด
  • -u , แสดงเจ้าของกระบวนการ
  • -x , แสดงกระบวนการที่ไม่ได้เชื่อมต่อกับเทอร์มินัล

กำลังเรียกใช้ ps -aux คนเดียวจะทำให้คุณทุกอย่างและทุกอย่าง แต่สิ่งนี้ไม่ค่อยมีประโยชน์ ไปที่ grep และค้นหากลุ่มที่หายไปของเรา

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

คำสั่ง ps-aux

และนั่นคือ! คุณจะเห็นคำสั่ง grep ปัจจุบันของคุณอยู่ในนั้นด้วย หากคุณไม่ต้องการให้เปลี่ยน grep a smidge

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

คำสั่ง ps-aux พร้อม grep

ที่นั่น. ตอนนี้มองหา กลุ่ม แต่อย่าแสดงให้เราเห็นกระบวนการ grep ที่กำลังมองหา vim . เอาล่ะ ฆ่า กระบวนการ. เราจะเริ่มด้วย การฆ่า แล้วลอง ฆ่า .

ฆ่ากระบวนการ (ฆ่า &ฆ่า)

โอเค เรามีสิ่งที่ต้องการแล้ว ชื่อกระบวนการ (กลุ่ม ) และ ID กระบวนการ (140464) คิลออล ใช้ชื่อและ ฆ่า ใช้ ID กระบวนการ แต่ละอันส่งสัญญาณชุดเดียวกัน:HUP , INT , ฆ่า , ระยะเวลา และ หยุด เป็นเรื่องธรรมดาที่สุด หากคุณต้องการเรียนรู้เพิ่มเติม ตรวจสอบรายการด้วย ฆ่า -ล .

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

คำสั่ง kill -l

มาดูสัญญาณทั่วไปกัน:

  • ฮับ , ค่าสัญญาณ 1. วางสาย. คำที่ล้าสมัยซึ่งคงอยู่ตั้งแต่สายโทรศัพท์และโมเด็ม การวางสายในระบบส่วนใหญ่จะทำให้ daemon รีสตาร์ท แทนที่จะหยุดทำงาน
  • INT , ค่าสัญญาณ 2. ขัดจังหวะ. โดยปกติ เมื่อโต้ตอบกับกระบวนการ คุณสามารถส่ง CTRL+C เพื่อขัดจังหวะได้ การส่ง kill -2 จะใช้สัญญาณขัดจังหวะแบบเดียวกัน
  • ฆ่า , ค่าสัญญาณ 9. ฆ่า. นี่คือสิ่งที่เราต้องการ การดำเนินการนี้จะฆ่า PID ทันที
  • ระยะเวลา , ค่าสัญญาณ 15. ยุติ. นี่เป็นพฤติกรรมปกติสำหรับการสิ้นสุดกระบวนการ หากคุณต้องการมีเมตตาต่อกระบวนการ คุณต้องจบกระบวนการนี้อย่างสง่างาม โดยค่าเริ่มต้น การฆ่าจะส่งสัญญาณ 15
  • หยุด , ค่าสัญญาณ 17, 19, 23 สิ่งนี้จะหยุดกระบวนการชั่วคราว สมมติว่าคุณกำลังคัดลอกไดเร็กทอรีขนาดใหญ่ และตระหนักว่าคุณต้องการลบบางโฟลเดอร์ ส่ง SIGSTOP ลบโฟลเดอร์ และดำเนินการต่อด้วย SIGCONT

ตกลง ฉันเพิ่มค่าสัญญาณแล้ว ค่าเหล่านี้เป็นค่าตัวเลขของสัญญาณและใช้ใน ฆ่า คำสั่งแทนการพิมพ์ SIGHUP ตัวอย่างเช่น:

  • killall -9 กลุ่ม

จะพยายามฆ่าทุกอย่างที่ชื่อกลุ่ม ฉันแนะนำว่าเมื่อใดก็ตามที่คุณใช้ killall คุณต้องยืนยันว่ากระบวนการของคุณถูกกำจัดเรียบร้อยแล้ว

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

killall -9 กลุ่ม

หากยังเหลืออยู่ ให้ฆ่าด้วยตนเองด้วย ฆ่า -9 ตามด้วยรหัสกระบวนการ เช่น:

  • ฆ่า -9 140464

บทสรุป

มีคำอธิบายง่ายๆ เกี่ยวกับการฆ่ากระบวนการ เริ่มต้นด้วยด้านบนสำหรับกระบวนการโอเวอร์รัน ใช้ ฆ่า ด้วยกระบวนการกราฟิกที่ติดขัด แยกเศษที่เหลือด้วย ฆ่า . ที่จะดูแลปัญหาส่วนใหญ่ของคุณ

หากมีข้อสงสัยให้รีบูต ปฏิบัติตามขั้นตอนการแจ้งเตือนที่เหมาะสมก่อนดำเนินการ เรียนรู้คำสั่งเชลล์เพิ่มเติม และทบทวนทักษะ Linux ของคุณ