กระบวนการซอมบี้

อ่านรายการจาก Elav ฉันจำได้ว่าในฟอรัมมีคนขอความช่วยเหลือเนื่องจากระบบของพวกเขาทำงานช้าโซลูชันบางอย่างเน้นที่กระบวนการ

สถานะหลักของกระบวนการใน Linux คือ:
นอน (S) : กระบวนการที่กำลังรอให้ถึงเวลาดำเนินการ
วิ่ง (R) : กระบวนการที่กำลังทำงาน
กำลังรอ (D) : กระบวนการที่รอให้การดำเนินการเข้า / ออกเสร็จสมบูรณ์
ซอมบี้ (Z) : กระบวนการที่สิ้นสุดลง แต่ยังคงปรากฏในตารางกระบวนการ อาจเกิดจากข้อผิดพลาดในการเขียนโปรแกรมและอาจเป็นอาการของระบบที่ทำงานช้าหรือทำให้เกิดปัญหา

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

อาจเกิดจากข้อผิดพลาดในการเขียนโปรแกรมและอาจเป็นอาการของระบบที่ทำงานช้าหรือทำให้เกิดปัญหา สถานการณ์นี้มักเกิดขึ้นเนื่องจากผู้พัฒนาไม่ได้พิจารณาการกำหนดค่าบางอย่าง

ในวิกิพีเดียคุณสามารถทำได้ อ่านเพิ่มเติม เกี่ยวกับกระบวนการเหล่านี้

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

กระบวนการ

หากต้องการดูกระบวนการทั้งหมดพิมพ์ในเทอร์มินัล: ps auxและดูเฉพาะซอมบี้: ps -el | grep 'Z'o ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]'

alf @ Alf ~ $ ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]'

1945 Z

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

alf @ Alf ~ $ ฆ่า - 9 1945

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

alf @ Alf ~ $ sudo kill -HUP `ps -A -ostat, ppid, pid, cmd | grep -e '^ [Zz]' | awk '{พิมพ์ $ 2}' ''

ความนับถือ


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา

  1.   เหมาะสม dijo

    ????

  2.   ออสการ์ dijo

    ขอบคุณการสนับสนุนที่ดีมากฉันจะบันทึกคำสั่งเพื่อทำการตรวจสอบเป็นระยะ

  3.   หยอกล้อ dijo

    ขอบคุณบทความดีๆ

  4.   MSX dijo

    คำชี้แจงสองสามข้อเกี่ยวกับบทความของคุณ:

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

    "กระบวนการซอมบี้" เป็นรายการในตารางการแมปของตัวระบุกระบวนการ (ตัวอธิบายกระบวนการ) ดังนั้นจึงไม่ใช้ทรัพยากรเกินหน่วยความจำสองสามไบต์ที่ระบบใช้เพื่อติดตาม ตารางกระบวนการ

    ปัญหาเดียวที่อาจมีกับตัวบอกรีจิสตรี ghost (หรือ zombie) ก็คือถ้าพวกมันวางไข่เร็วเกินไปพวกเขาสามารถครอบครองตารางการจัดสรรตัวอธิบายกระบวนการทั้งหมดในทางทฤษฎีออกจากระบบโดยไม่มีที่ว่างสำหรับเร็กคอร์ดใหม่ดังนั้นจึงอาจเป็นได้ ไม่สามารถเรียกใช้โปรแกรมใหม่ - ที่บันทึกกระบวนการของพวกเขา - ในที่สุดก็วางสายเครื่อง

    อย่างไรก็ตามสิ่งนี้แทบจะเป็นไปไม่ได้เลยที่จะเกิดขึ้นเนื่องจากในระบบ 32 บิตมีช่องว่าง 32767 สำหรับการลงทะเบียนกระบวนการ (ไม่ค่อยมีหรือไม่เคยใช้) และสองเท่าในระบบ 64 บิต

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

    : () {: |: &};:

    คุณสามารถทำให้ระบบค่อนข้างทนทานต่อส้อมระเบิดได้โดยกำหนดค่า /etc/security/limits.conf ให้ถูกต้องแม้ว่าจะต้องคำนึงว่ายิ่งเราจำกัดความเป็นไปได้ในการสร้างกระบวนการใหม่มากเท่าไหร่เราก็จะสามารถเรียกใช้แอปพลิเคชันน้อยลงในระบบของเราได้พร้อมกัน อย่างไรก็ตามมันเป็นเครื่องมือที่ถูกต้องสำหรับผู้ดูแลระบบที่หวาดระแวงทุกคนที่ต้องการควบคุมระบบของพวกเขาได้ดีมาก!

    บทความนี้มีข้อมูลที่ดีเกี่ยวกับตัวบอกกระบวนการที่ไม่ถูกต้อง:
    http://www.howtogeek.com/119815/htg-explains-what-is-a-zombie-process-on-linux/
    และในนี้มีคำอธิบายที่ชัดเจนเกี่ยวกับการทำงานของส้อมระเบิด: http://stackoverflow.com/questions/991142/how-does-this-bash-fork-bomb-work

    Salu2

    1.    jotaele dijo

      msx: «คำว่า "กระบวนการซอมบี้" ไม่เหมาะสมในทางเทคนิคและพวกเราที่มีประสบการณ์เล็กน้อยใน GNU / Linux ควรหลีกเลี่ยงการใช้มัน…»ฮ่าฮ่าฮ่า มีเพียงสิ่งที่ยิ่งใหญ่กว่าความภาคภูมิใจของคุณนั่นคือรสนิยมที่ไม่ดีของคุณ เฮ้สิ่งที่คุณทำมันแย่มากถ้าคุณอยากจะบรรยายหาที่คณะหรือเขียนบล็อกของคุณเองและเขียนสิ่งที่คุณต้องการ แต่การมาที่นี่เพื่อแก้ไขการแบนให้เป็น Alf ที่ดีนั้นมีรสชาติที่แย่จริงๆ

      1.    เฟอร์นันโดโรจาส dijo

        ความจริงดูเหมือนสำหรับฉันเป็นความคิดเห็นที่น่าสนใจทีเดียว เยอะกว่าโพสต์

  5.   Platonov dijo

    ขอบคุณที่น่าสนใจมาก

  6.   โรตส์ 87 dijo

    ขอบคุณบทความที่ยอดเยี่ยม

  7.   Alf dijo

    MSX
    «คำว่า "กระบวนการซอมบี้" ไม่เหมาะสมในทางเทคนิคและพวกเราที่มีประสบการณ์เล็กน้อยใน GNU / Linux ควรหลีกเลี่ยงการใช้มัน»

    เราจะต้องแจ้งให้ผู้พัฒนาทราบเนื่องจากอย่างที่คุณเห็นมีการใช้คำว่าซอมบี้ด้วยเช่นกันฉันอ่านมันบนคอนโซล

    ความนับถือ

  8.   เมือง dijo

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

  9.   ทรูโกะ 22 dijo

    ใน KDE ที่มีกิจกรรมระบบควบคุม + หลบหนีออกไปและเราสามารถฆ่าซอมบี้เหล่านั้นได้อย่างรวดเร็ว

  10.   ฝนตก dijo

    การแก้ไขมันเป็น ZOMBIE ไม่ใช่กระบวนการ ZOMBIE
    ซอมบี้เป็นภาษาอังกฤษ
    Zombi ในภาษาสเปน

  11.   เอลินซ์ dijo

    หรูหราขอบคุณ!.

  12.   โรแบร์โต dijo

    ขั้นแรกคำว่ากระบวนการซอมบี้ดูเหมือนถูกต้องทั้งหมด นอกจากนี้ระยะที่มีความสำคัญน้อยที่สุด
    ประเด็นก็คือตามที่ msx ระบุและวิกิพีเดียเดียวกัน (ฉันอ่านบทความ) กระบวนการซอมบี้นั้นตายไปแล้ว
    «เมื่อกระบวนการสิ้นสุดลงหน่วยความจำและทรัพยากรทั้งหมดที่เกี่ยวข้องจะถูกยกเลิกการอ้างอิงเพื่อให้สามารถใช้โดยกระบวนการอื่นได้ อย่างไรก็ตามรายการกระบวนการในตารางกระบวนการยังคงอยู่»
    นั่นคือกระบวนการไม่ได้ใช้ทรัพยากรระบบอีกต่อไปดังนั้นภาระในระบบจึงน้อยที่สุดดังที่อธิบายโดย msx
    อย่างไรก็ตามสิ่งเดียวที่มีคือรายการที่ไม่ถูกต้องในตารางกระบวนการ ... ซึ่งหากมีหลายพันรายการบางทีมันอาจจะเป็นการโหลด (ท้ายที่สุดโปรเซสเซอร์ต้องอ่านตารางกระบวนการและจะอ่านข้อมูลที่ไร้ประโยชน์จำนวนมาก) นอกเหนือจากการสะท้อนแนวทางการเขียนโปรแกรมที่ไม่ดี (มีบางคนกำลังสร้างแอปพลิเคชันที่ไม่ดี)
    แต่ในตัวเองคำอธิบายของโพสต์นั้นไม่ถูกต้องนักและคำอธิบายที่ถูกต้องน่าจะเป็นคำอธิบายของ msx