כיצד תהליכים להרוג זומבי על לינוקס

Nov 25, 2024
לינוקס
Fatmawati אחמד Zaenuri / Shutterstock

תוכנית שנכתבו גרוע או ביצוע גרוע יכול לעזוב תהליכי זומבי אורב בתוך המחשב לינוקס שלך. גלה כיצד זומבים נוצרים, וכיצד אתם יכולים סוף סוף להניח להם לנוח.

כיצד תהליך הברית עבודה על לינוקס

לינוקס, כמובן, יש לעקוב אחר כל היישומים דמונים שפועלת במחשב. אחת הדרכים היא עושה זאת היא על ידי שמירה על שולחן התהליך. זוהי רשימה של מבנים בזיכרון הקרנל. לכל תהליך רשומה ברשימה זו שמכילה כמה פרטים על זה.

אין הרבה בכל אחד מהמבנים שולחן התהליך. הם מחזיקים את מזהה תהליך , כמה פריטי נתונים אחרים, וכן מצביע לגוש בקרת תהליכים (PCB) עבור תהליך זה.

זהו PCB שמכיל את הפרטים הרבים לינוקס צריך להסתכל למעלה או להגדיר עבור כל תהליך. ה- PCB מתעדכן גם כתהליך נוצר, נתון זמן עיבוד, ולבסוף נהרס.

לינוקס PCB מכיל מעל 95 שדות. זה מוגדר כמבנה שנקרא task_struct.h , וזה נגמר מזמן 700 קווים. ה- PCB מכיל את סוגי המידע הבאים:

  • מדינת תהליך : קובע מתוארים להלן.
  • מספר תהליכים : מזהה הייחודי שלה בתוך מערכת ההפעלה.
  • מונה התוכנית : כאשר תהליך זה ניתן בא גישה המעבדת, המערכת תשתמש בכתובת זו כדי למצוא את ההוראה הבאה של התהליך שאמורה להתבצע.
  • אוגרי : רשימת רושם CPU בשימוש על ידי תהליך זה. הרשימה עשויה לכלול מצברים, רושם מדד, ומצביע מחסנית.
  • רשימת פתח קובץ : קבצים הקשורים בתהליך זה.
  • מידע תזמון CPU משמש כדי לקבוע באיזו תדירות, ובמשך כמה זמן, זמן עיבוד CPU מוענק תהליך זה:. העדיפות של התהליך, עצות תורי תזמון, תזמון ופרמטרים אחרים צריכות להיות מוקלטות PCB.
  • מידע ניהול זיכרון : תהליך פרטים על הזיכרון הזה משתמש, כגון כתובות ההתחלה והסיום של זיכרון התהליך, ומצביעים אל דפי זיכרון.
  • I / O מידע מצב : כל-או התקני פלט בשימוש על ידי תהליך.

"המדינה Process" יכול להיות כל אחד מהבאים:

  • R: כתובת שרצה או תהליך Runnable. Running כלומר זה קבלת מחזורי CPU וביצוע. תהליך Runnable מוכן לרוץ ומחכה חריץ ה- CPU.
  • S: תהליך השינה. התהליך מחכה פעולה כדי להשלים, כגון מבצע ב-או פלט, או עבור משאב להיות זמין.
  • D: התהליך נמצא במצב שינה פסק. זה באמצעות קריאת המערכת חוסמת ולא יכול להמשיך עד שיחות מערכת השלימו. בניגוד למצב "שינה", תהליך במצב הזה לא יגיב אותות עד קריאת המערכת תושלם וביצוע חזר התהליך.
  • T: התהליך הסתיים (הפסיק) משום שהוא קיבל את SIGSTOP אוֹת. זה רק תגיב אל ה Sigkill אוֹ SIGCONT אותות, אשר גם להרוג את התהליך או להורות לו להמשיך, בהתאמה. זה מה שקורה כשאתה להחליף מ קדמה ( FG ) ל רקע כללי ( BG) משימות.
  • Z: תהליך זומבי. כאשר השלים תהליך, זה לא פשוט להיעלם. זה משחרר את כול זיכרון שהן נעזרות ומסיר עצמו מזיכרון, אבל הכניסה שלו בטבלת התהליך PCB להישאר. המדינה שלה מוגדרת EXIT_ZOMBIE , תהליך האב שלו הוא הודיע ​​(על ידי סיגצ'ד אות) שהתהליך שהילד סיים.

במצב זומבי, תהליך ההורה קורא אחד לַחֲכוֹת() משפחות של פונקציות כאשר תהליך הילד נוצר. לאחר מכן הוא מחכה לשינוי המדינה בתהליך הילד. האם תהליך הילד נעצר, נמשך, או נהרג על ידי אות? האם זה הסתיים על ידי ריצה דרך ההשלמה הטבעית של הקוד שלה?

אם שינוי המדינה הוא אחד שמשמעותו שתהליך הילד הפסיק לפעול, קוד היציאה שלו נקרא. לאחר מכן, ה- PCB של הילד נהרס והכניסה שלו בטבלת התהליך מוסרת. באופן אידיאלי, כל זה קורה בהרף עין, ותהליכים במצב זומבי לא קיימים במשך זמן רב.

קָשׁוּר: כיצד להפעיל ולשלוט תהליכי רקע על לינוקס

מה גורם לתהליכי זומבי על לינוקס?

תהליך הורה כתב גרוע עשוי שלא להתקשר לַחֲכוֹת() כאשר תהליך הילד נוצר. משמעות הדבר היא שום דבר לא צופה לשינויים המדינה בתהליך הילד, ואת סיגצ'ד האות יתעלם. לחלופין, אולי יישום נוסף משפיע על ביצוע תהליך האב, או עקב תכנות גרוע או כוונה זדונית.

עם זאת, אם תהליך האב אינו צופה לשינויים במצב בתהליך הילד, משק הבית הנכון של המערכת לא תתרחש. ה- PCB והכניסה בטבלת התהליך לא יוסרו כאשר תהליך הילד מסתיים. תוצאות אלה במצב זומבי אף פעם לא להסיר מן PCB.

זומבים עושים שימוש קצת זיכרון, אבל הם בדרך כלל לא מהווים בעיה. הכניסה בטבלת התהליך קטנה, אך עד שהיא שוחררה, מזהה התהליך לא ניתן לעשות בה שימוש חוזר. על מערכת הפעלה של 64 סיביות, זה לא סביר לגרום כל בעיות כי PCB הוא הרבה יותר גדול מאשר ערך הטבלה.

מספר עצום של זומבים יכול, ראוי להשפיע על כמות הזיכרון בחינם עבור תהליכים אחרים. אם יש לך כי זומבים רבים, אם כי, יש לך בעיה רצינית עם יישום האב או באג מערכת ההפעלה.

כיצד להסיר תהליכים זומבים

אתה לא יכול להרוג תהליך זומבי כי זה כבר מת. זה לא יגיב לכל אותות כי זה הוסר מהזיכרון - אין לאן לשלוח Sigkill אוֹת. אתה יכול לנסות לשלוח את סיגצ'ד האות לתהליך האב, אבל אם זה לא עובד כאשר תהליך הילד הסתיים, זה לא סביר לעבוד עכשיו, או.

הפתרון היחיד מהימן הוא להרוג את תהליך האב. כאשר הוא הסתיים, תהליכי הילד שלה הם בירושה על ידי יַעֲלָן תהליך, שהוא התהליך הראשון לרוץ במערכת לינוקס (מזהה התהליך שלו הוא 1).

ה יַעֲלָן תהליך מבצע באופן קבוע את הניקוי הדרוש של זומבים, כך להרוג אותם, אתה רק צריך להרוג את התהליך שיצר אותם. ה חלק עליון הפקודה היא דרך נוחה לראות אם יש לך כל זומבים.

הקלד את הדברים הבאים:

  Top  

מערכת זו יש 8 תהליכים זומבי. אָנוּ רשימת אלה באמצעות נ.ב פקודה וצנרת אותו eGREP. . שוב, תהליכים זומבי יש דגל המדינה של "Z", ואתה בדרך כלל גם לראות "defunct".

הקלד את הדברים הבאים:

 PS AUX EGREP "Z | Defunct" 

תהליכי זומבי רשומים.

זוהי דרך neater לגלות את תעודות הזהות של זומבים מאשר גלילה הלוך ושוב דרך חלק עליון . אנו גם רואים כי יישום בשם "Badprg" הוליד את הזומבים האלה.

מזהה התהליך של זומבי הראשון הוא 7641, אבל אנחנו צריכים למצוא את מזהה התהליך של תהליך ההורה שלה. אנחנו יכולים לעשות זאת באמצעות נ.ב שוב. נשתמש באפשרות הפלט ( - ) לספר נ.ב כדי להציג רק את תעודת התהליך של ההורה, ולאחר מכן להעביר אותו עם PPID = דֶגֶל.

התהליך שאנו רוצים למצוא יפורסם על ידי שימוש - (תהליך) אפשרות, ולאחר מכן עובר בתהליך התהליך של זומבי.

לכן, אנו מקליד את הפקודה הבאה כדי לחפש את פרטי התהליך עבור תהליך 7641, אבל זה יהיה רק ​​לדווח על מזהה של תהליך האב:

 PS -O PPID = -P 7641 

נאמר לנו מזהה תהליך האב הוא 7636. אנחנו יכולים עכשיו לחצות זה באמצעות נ.ב פעם נוספת.

אנחנו רואים את זה תואם את השם של תהליך ההורה מוקדם יותר. להרוג את התהליך ההורה, להשתמש באפשרות SIGKILL עם הפקודה להרוג כדלקמן:

 להרוג -SIGKILL 7636 

בהתאם הבעלים של תהליך ההורה, אולי גם אתה צריך להשתמש sudo .

זומבים הם לא מפחידים ...

... אלא אם כן הם כמו עדר גדול מסיבי. כמה הם לא משהו לדאוג ו אתחול מחדש פשוט יחסל אותם.

עם זאת, אם אתם מבחינים כי יישום או תהליך תמיד השרצה זומבים, זה משהו שאתה צריך להסתכל לתוך. ביותר זה סביר רק תכנית כתובה ברישול, ובמקרה, אולי יש גרסה מעודכנת שהמנקה כמו שצריך אחרי תהליכי הילד שלה.


לינוקס - המאמרים הפופולריים ביותר

מה חדש ב- Ubuntu 21.04 "היפו ושעיר"

לינוקס Apr 22, 2025

שחרור חדש של אובונטו 21.04. , Hirsute Hippo, שוחרר ב -22 באפריל 2021. זוהי שחרור ביניים של הפצה של לינוקס הפופו�..


כיצד הסתר סמלים בשולחן העבודה כל על Mac

לינוקס Jun 23, 2025

Krisda / Shutterstock. האם שולחן העבודה Mac שלך בלגן? לא באמת רוצה לארגן את הכל? אל תדאג, אתה יכול להש..


דוקר למתחילים: צריך אותך הכל לדעת

לינוקס Jun 15, 2025

סַוָר יוצר יישומים ארוזים מכולות שנקראות. מיכל כול מספק סביבה מבודדת דומה מכונה וירטואלי..


מה חדש ב- GNOME 41?

לינוקס Sep 16, 2025

סביבת שולחן העבודה של לינוקס גַמָד 41 שוחרר ב -22 בספטמבר, 2021. Coming חם על העקבים של שינויים עבודה-הסט�..


מה חדש ב- Ubuntu 21.10 "שובב אינדרי"

לינוקס Oct 14, 2025

קנונלי אובונטו 21.10 "אימיש Indri" היה מְשׁוּחרָר ב -14 באוקטובר 2021. תכונות GNOME 40. , ל�..


האם אתה יכול להתקין לינוקס על M1 Apple סיליקון Mac?

לינוקס Nov 12, 2024

לא כל אחד קונה מק ל MacOS לרוץ אך ורק. החדשות הרעות הן כי החל מנובמבר 2021, תמיכת Linux מקומית על אפל הסיליקון ה�..


כיצד להתקין לינוקס על M1 Mac עם Apple סיליקון

לינוקס Nov 11, 2024

התמיכה מובנית לינוקס עבור תפוח של הארכיטקטורה חדשה מבוסס ARM היא עדיין לא מוכנה, אבל אתה יכול להריץ לינוק..


כיצד להרוג תהליך לינוקס לפי מספר יציאה

לינוקס Oct 4, 2025

כדי להרוג תהליך לינוקס אתה זקוק למזהה שלו או לשמו. אם כל מה שאתה יודע זה היציאה שהיא משתמשת, האם אתה עדיין י�..


קטגוריות