ซอมบี้เป็นกระบวนการที่ตายแล้ว พวกเขาไม่สามารถ 'ฆ่า' (คุณไม่สามารถฆ่า DEAD) กระบวนการทั้งหมดจะตายในที่สุดและเมื่อพวกเขากลายเป็นซอมบี้ พวกเขากินทรัพยากรแทบจะไม่มีซึ่งคาดว่าจะเป็นเพราะพวกเขาตาย! เหตุผลสำหรับซอมบี้คือพ่อแม่ของซอมบี้ (กระบวนการ) สามารถดึงสถานะการออกของซอมบี้และสถิติการใช้ทรัพยากร พาเรนต์ส่งสัญญาณระบบปฏิบัติการว่าไม่ต้องการซอมบี้อีกต่อไปโดยใช้การเรียกของระบบ wait ()
เมื่อกระบวนการตายกระบวนการลูกทั้งหมดจะกลายเป็นลูกของกระบวนการหมายเลข 1 ซึ่งเป็นกระบวนการเริ่มต้น ตอนแรกคือ `` '' เสมอรอให้เด็กตายเพื่อที่พวกเขาจะไม่คงอยู่เหมือนซอมบี้
หากคุณมีกระบวนการซอมบี้หมายความว่าซอมบี้เหล่านั้นไม่ได้รอโดยผู้ปกครอง (ดู PPID ที่แสดงโดยps -l
) คุณมีสามตัวเลือก: แก้ไขกระบวนการหลัก (ทำให้รอ); ฆ่าผู้ปกครอง; หรืออยู่กับมัน โปรดจำไว้ว่าการอยู่กับมันนั้นไม่ยากนักเพราะซอมบี้ใช้สายพิเศษมากกว่าหนึ่งเส้นในเอาต์พุตของ ps
ซอมบี้สามารถระบุได้ในเอาต์พุตจากคำสั่ง Unix ps โดยมี "Z" อยู่ในคอลัมน์ STAT ซอมบี้ที่มีอยู่เป็นระยะเวลาสั้น ๆ มักจะระบุว่ามีบั๊กในโปรแกรมหลัก เช่นเดียวกับการรั่วไหลอื่น ๆ การปรากฏตัวของซอมบี้สองสามตัวนั้นไม่น่าเป็นห่วง แต่อาจบ่งบอกถึงปัญหาที่จะเพิ่มขึ้นอย่างรุนแรงภายใต้ภาระที่หนักกว่า
ในการลบซอมบี้ออกจากระบบสัญญาณ SIGCHLD สามารถส่งไปยังผู้ปกครองได้ด้วยตนเองโดยใช้คำสั่ง kill หากกระบวนการหลักยังคงปฏิเสธที่จะเก็บเกี่ยวซอมบี้ขั้นตอนต่อไปคือการลบกระบวนการหลัก เมื่อกระบวนการสูญเสียพาเรนต์ init จะกลายเป็นพาเรนต์ใหม่ ตอนแรกจะทำการเรียกระบบรอเพื่อเก็บเกี่ยวซอมบี้ใด ๆ ที่มี init เป็นผู้ปกครอง
นอกจากนี้ยังมีกระบวนการเด็กกำพร้าซึ่งเป็นกระบวนการคอมพิวเตอร์ที่มีกระบวนการหลักได้เสร็จสิ้นหรือสิ้นสุด
กระบวนการสามารถกลายเป็น orphaned ในระหว่างการร้องขอระยะไกลเมื่อกระบวนการไคลเอนต์ขัดข้องหลังจากทำการร้องขอของเซิร์ฟเวอร์
เด็กกำพร้าเสียทรัพยากรของเซิร์ฟเวอร์และอาจทำให้เซิร์ฟเวอร์มีปัญหา (นี่คือความแตกต่างของทรัพยากรที่ใหญ่ที่สุดระหว่างซอมบี้และเด็กกำพร้า (ยกเว้นถ้าคุณเห็นภาพยนตร์เด็กกำพร้าบางคน) อย่างไรก็ตามมีวิธีการแก้ปัญหาเด็กกำพร้าหลายวิธี:
การกำจัดเป็นเทคนิคที่ใช้กันมากที่สุด ในกรณีนี้กระบวนการเด็กกำพร้าถูกฆ่าตาย
การกลับชาติมาเกิดเป็นเทคนิคที่เครื่องจักรพยายามค้นหาผู้ปกครองของการคำนวณระยะไกลเป็นระยะ ๆ ที่จุดกำพร้ากระบวนการถูกฆ่าตาย
การหมดอายุเป็นเทคนิคที่แต่ละกระบวนการได้รับการจัดสรรเวลาให้เสร็จก่อนที่จะถูกฆ่า หากจำเป็นต้องมีกระบวนการอาจ "ขอ" สำหรับเวลาให้เสร็จสิ้นก่อนเวลาที่กำหนดจะหมดอายุ
กระบวนการสามารถกำพร้าทำงานในเครื่องเดียวกับกระบวนการหลัก ในระบบปฏิบัติการที่เหมือนยูนิกซ์กระบวนการใด ๆ ที่ถูกกำพร้าจะถูกนำไปใช้ทันทีโดยกระบวนการของระบบ "init" พิเศษ การดำเนินการนี้เรียกว่าการอบรมเลี้ยงดูใหม่และเกิดขึ้นโดยอัตโนมัติ แม้ว่าในทางเทคนิคแล้วกระบวนการจะมีกระบวนการ "init" ในฐานะผู้ปกครอง แต่ก็ยังเรียกว่ากระบวนการเด็กกำพร้าตั้งแต่กระบวนการที่สร้างขึ้น แต่เดิมไม่มีอยู่แล้ว
ข้อมูลเพิ่มเติม:
http://wiki.answers.com/Q/What_is_Zombie_Process_and_Orphan_Process#ixzz1PCN9vojU
http://www.linuxsa.org.au/tips/zombies.html
http://www.brighthub.com/computing/linux/articles/79186.aspx
วิธีการระบุและฆ่ากระบวนการหยุดทำงานเมื่อระบบหยุดทำงานและตอบสนองช้าในการป้อนข้อมูลผู้ใช้
ฆ่ากระบวนการทำงานในเครื่อง Ubuntu จากระยะไกลจากเครื่อง windows ซึ่งอยู่ใน LAN