มีหลายวิธีที่สามารถใช้เพื่อฆ่ากระบวนการใน Linux บทแนะนำนี้จะสอนวิธีค้นหาและกำจัดกระบวนการที่เสียหาย
กระบวนการสามารถกลายเป็นเด็กกำพร้าได้ง่าย ไม่ว่าจะโดยตั้งใจหรือไม่ก็ตาม กระบวนการหลักสามารถหยุดทำงานและปล่อยให้กระบวนการย่อยทำงานอยู่ บางครั้ง กระบวนการหลักล้มเหลวในการเก็บเกี่ยวกระบวนการลูกที่เสร็จสมบูรณ์ และกระบวนการนั้นกลายเป็นซอมบี้
กระบวนการทั้งสองนี้ติดขัดและต้องการการแทรกแซงโดยเจ้าหน้าที่ เข้าสู่การควบคุมงาน มาดูวิธีฆ่ากระบวนการที่เสียหายกัน
มาดูคำสั่งกัน:
- ด้านบน (และทำไม htop น่าจะดีกว่า)
- ป.ล.
- ฆ่า
บนสุด (ค้นหาและทำลาย)
ก่อนที่คุณจะสามารถส่งข้อความฆ่าไปยังกระบวนการทั้งหมดได้ คุณต้องรู้ว่าคุณมีอะไรบ้าง เราไม่คิดว่าเรามีกระบวนการทำงานผิดพลาด และรู้ว่าต้องมองหาอะไร นั่นคือสิ่งที่เรามี ด้านบน สำหรับ. มาวิ่งกันเถอะ กลุ่ม และแสดงเป็นพื้นหลัง
เป็นกลุ่ม
เอาล่ะ ตอนนี้เรามีกระบวนการที่เราไม่สามารถโต้ตอบได้ตามปกติ มาวิ่งกัน บน . เอาต์พุตปกติไม่มีประโยชน์ ดังนั้นเราจะเรียกใช้ตัวกรอง
- กด shift+l
- พิมพ์ กลุ่ม
- กด Enter
ด้านบน
มีผลงานของเรา คุณจะสังเกตเห็นในบรรทัดแรก มันบอกเวลาทำงาน จำนวนผู้ใช้ และค่าเฉลี่ยโหลดของเรา คุณจะสังเกตเห็นว่ามีข้อมูลสำคัญอยู่ในคอลัมน์ ปกติทุกวันฉันกำลังดู S , %CPU และ TIME+ . หากกระบวนการอยู่ในสถานะ Z (ซอมบี้) ฉันรู้ที่จะฆ่ามัน หากกระบวนการมี CPU เกิน 100% แสดงว่ามีการโอเวอร์รันและอาจจำเป็นต้องถูกกำจัดด้วย หรือหากกระบวนการเกิดขึ้นสองสามวัน อาจถึงเวลาเริ่มต้นใหม่ แม้ว่านั่นอาจเป็นความหวาดระแวง และไม่จำเป็นในกรณีส่วนใหญ่
วันนี้เรากำลังดูบรรทัดที่สอง ล่าซอมบี้และค้นหาเด็กกำพร้า สำหรับตัวอย่างของเรา เราไม่มีกระบวนการซอมบี้ที่ทำงานอยู่ ดังนั้นเราจะกรองหากระบวนการ "2 หยุด"
- กด o
- ประเภท:S=T
ตัวกรองด้านบน
ตอนนี้เรากรองเฉพาะกระบวนการใน S=T (state=stopped) ฟิลเตอร์ เราฆ่ามันได้ ขณะที่อยู่ด้านบน คุณสามารถกด k เข้าสู่กระบวนการ PID และกด Enter หากคุณกำลังวิ่งผ่าน คุณจะสังเกตเห็นว่าอาจใช้เวลาสักครู่กว่าจะสิ้นสุด ให้กด k . แทน อีกครั้ง ป้อน PID และเปลี่ยนสัญญาณเป็น 9 .
มันไม่สมบูรณ์แบบ แต่ถ้าคุณมีหน้าต่างด้านบนที่ทำงานเป็นหน้าต่างสถานะ แสดงว่าคุณอยู่ที่นั่นแล้ว คุณยังสามารถส่งสัญญาณฆ่าแทนสัญญาณหยุดได้
htop
ตกลงฉันจะยอมรับ ก็ไม่ต่างจากท็อปเท่าไหร่ ยกเว้นสี
htop
สีสันมากมาย
ป.ล.
PS สถานะกระบวนการ ยูทิลิตี้ดั้งเดิมที่น่ารักของเราสำหรับการดูข้อมูลกระบวนการในระบบของเรา เครื่องมือนี้อ่านจากไฟล์ใน /proc . ส่วนใหญ่ คุณจะใช้:
ปล.
- -a , แสดงกระบวนการสำหรับผู้ใช้ทั้งหมด
- -u , แสดงเจ้าของกระบวนการ
- -x , แสดงกระบวนการที่ไม่ได้เชื่อมต่อกับเทอร์มินัล
กำลังเรียกใช้ ps -aux คนเดียวจะทำให้คุณทุกอย่างและทุกอย่าง แต่สิ่งนี้ไม่ค่อยมีประโยชน์ ไปที่ grep และค้นหากลุ่มที่หายไปของเรา
คำสั่ง ps-aux
และนั่นคือ! คุณจะเห็นคำสั่ง grep ปัจจุบันของคุณอยู่ในนั้นด้วย หากคุณไม่ต้องการให้เปลี่ยน grep a smidge
คำสั่ง ps-aux พร้อม grep
ที่นั่น. ตอนนี้มองหา กลุ่ม แต่อย่าแสดงให้เราเห็นกระบวนการ grep ที่กำลังมองหา vim . เอาล่ะ ฆ่า กระบวนการ. เราจะเริ่มด้วย การฆ่า แล้วลอง ฆ่า .
ฆ่ากระบวนการ (ฆ่า &ฆ่า)
โอเค เรามีสิ่งที่ต้องการแล้ว ชื่อกระบวนการ (กลุ่ม ) และ ID กระบวนการ (140464) คิลออล ใช้ชื่อและ ฆ่า ใช้ ID กระบวนการ แต่ละอันส่งสัญญาณชุดเดียวกัน:HUP , INT , ฆ่า , ระยะเวลา และ หยุด เป็นเรื่องธรรมดาที่สุด หากคุณต้องการเรียนรู้เพิ่มเติม ตรวจสอบรายการด้วย ฆ่า -ล .
คำสั่ง kill -l
มาดูสัญญาณทั่วไปกัน:
- ฮับ , ค่าสัญญาณ 1. วางสาย. คำที่ล้าสมัยซึ่งคงอยู่ตั้งแต่สายโทรศัพท์และโมเด็ม การวางสายในระบบส่วนใหญ่จะทำให้ daemon รีสตาร์ท แทนที่จะหยุดทำงาน
- INT , ค่าสัญญาณ 2. ขัดจังหวะ. โดยปกติ เมื่อโต้ตอบกับกระบวนการ คุณสามารถส่ง CTRL+C เพื่อขัดจังหวะได้ การส่ง kill -2 จะใช้สัญญาณขัดจังหวะแบบเดียวกัน
- ฆ่า , ค่าสัญญาณ 9. ฆ่า. นี่คือสิ่งที่เราต้องการ การดำเนินการนี้จะฆ่า PID ทันที
- ระยะเวลา , ค่าสัญญาณ 15. ยุติ. นี่เป็นพฤติกรรมปกติสำหรับการสิ้นสุดกระบวนการ หากคุณต้องการมีเมตตาต่อกระบวนการ คุณต้องจบกระบวนการนี้อย่างสง่างาม โดยค่าเริ่มต้น การฆ่าจะส่งสัญญาณ 15
- หยุด , ค่าสัญญาณ 17, 19, 23 สิ่งนี้จะหยุดกระบวนการชั่วคราว สมมติว่าคุณกำลังคัดลอกไดเร็กทอรีขนาดใหญ่ และตระหนักว่าคุณต้องการลบบางโฟลเดอร์ ส่ง SIGSTOP ลบโฟลเดอร์ และดำเนินการต่อด้วย SIGCONT
ตกลง ฉันเพิ่มค่าสัญญาณแล้ว ค่าเหล่านี้เป็นค่าตัวเลขของสัญญาณและใช้ใน ฆ่า คำสั่งแทนการพิมพ์ SIGHUP ตัวอย่างเช่น:
- killall -9 กลุ่ม
จะพยายามฆ่าทุกอย่างที่ชื่อกลุ่ม ฉันแนะนำว่าเมื่อใดก็ตามที่คุณใช้ killall คุณต้องยืนยันว่ากระบวนการของคุณถูกกำจัดเรียบร้อยแล้ว
killall -9 กลุ่ม
หากยังเหลืออยู่ ให้ฆ่าด้วยตนเองด้วย ฆ่า -9 ตามด้วยรหัสกระบวนการ เช่น:
- ฆ่า -9 140464
บทสรุป
มีคำอธิบายง่ายๆ เกี่ยวกับการฆ่ากระบวนการ เริ่มต้นด้วยด้านบนสำหรับกระบวนการโอเวอร์รัน ใช้ ฆ่า ด้วยกระบวนการกราฟิกที่ติดขัด แยกเศษที่เหลือด้วย ฆ่า . ที่จะดูแลปัญหาส่วนใหญ่ของคุณ
หากมีข้อสงสัยให้รีบูต ปฏิบัติตามขั้นตอนการแจ้งเตือนที่เหมาะสมก่อนดำเนินการ เรียนรู้คำสั่งเชลล์เพิ่มเติม และทบทวนทักษะ Linux ของคุณ