כיצד לבדוק את השימוש בזיכרון לכל תהליך ב- Linux

How Check Memory Usage Per Process Linux



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

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







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



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



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





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

אתה יכול לבדוק את השימוש בזיכרון (באחוזים) מכל התהליך הפועל במערכת ההפעלה Linux שלך באמצעות הפקודה הבאה:



$נ.ב -אוֹpid, משתמש,%אני אני,פקודהגַרזֶן| סוג -k3 -r

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

בדיקת השימוש בזיכרון של תהליכים באמצעות pmap:

אתה יכול לבדוק זיכרון של תהליך או קבוצה של תהליכים בפורמט קריא אנושי (ב- KB או קילובייט) עם pmap פקודה. כל מה שאתה צריך זה PID של התהליכים שאתה רוצה לבדוק את השימוש בזיכרון.

נניח שאתה רוצה לבדוק בכמה זיכרון התהליך באמצעות PID 917 משתמש. לשם כך, רץ pmap כדלהלן:

$סודוpmap917

כפי שאתה יכול לראות, סך הזיכרון המשמש את התהליך 917 הוא 516104 KB או קילובייט. אתה יכול גם לראות כמה זיכרון הספריות וקבצים אחרים הדרושים להפעלת התהליך עם PID 917 משתמש גם כאן.

אם לא אכפת לך כמה זיכרון הספריות או קבצים תלויים אחרים משתמשים, הפעל pmap כדלהלן:

$סודוpmap917 | זָנָב -n 1

כפי שאתה יכול לראות, רק הזיכרון הכולל המשמש את התהליך עם PID 917 מודפס על המסך.

אם תרצה, תוכל לסנן זאת עוד יותר באמצעות awk ולקבל רק את הגודל ב- KB או בקילובייט. לשם כך, רץ pmap כדלהלן:

$סודוpmap917 | זָנָב -n 1 | awk ' / [0-9] K / {הדפס $ 2}'

כפי שאתה יכול לראות, רק השימוש בזיכרון ב- KB או בקילובייט מודפס.

עכשיו אתה יכול גם לרשום כמה זיכרון משמש בתהליכים מרובים באמצעות ה- PID שלהם pmap כדלהלן:

$סודוpmap917 531 | אחיזהסה'כ

הערה: כאן 917 ו- 531 הם מזהי תהליכים או מזהי PID. אתה יכול לשים כמה PID שאתה רוצה בדרך זו.

שימוש ב- pmap לרשימת השימוש בזיכרון של כל התהליכים בקילובייט:

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

ראשית צור קובץ חדש סיסמון בספריית העבודה הנוכחית שלך עם הפקודה הבאה:

$לגעתסיסמון

כעת הפוך את הקובץ להפעלה באמצעות הפקודה הבאה:

$chmod+x סימון

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

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

כעת, הפקודה הראשונה שאני עומד להעביר תיתן לי את PID , בעלים ו פקודה מכל תהליכי הריצה המופרדים באמצעות סמל נקודה (:) ושמור אותו ב- RAWIN מִשְׁתַנֶה. לאחר מכן עיין בפלט והדפס אותו על המסך.

כפי שאתה יכול לראות, אני מקבל את הפלט הנכון.

עכשיו הגיע הזמן לעבד כל שורה, לאחסן את המידע המופרד במעי הגס במשתנים נפרדים. זה מה שעשיתי בשורה 7, 8 ו -9.

כפי שאתה יכול לראות, אני יכול להדפיס PID , בעלים ו פקודה במתכונת משלי עכשיו.

עכשיו הגיע הזמן להביא שימוש בזיכרון של כל PID. קו 10 עושה בדיוק את זה.

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

כעת כל שנותר לעשות הוא לעצב את הפלט כך שייראה נחמד. אני מעדיף פורמט טבלה. שורה 5 מדפיסה את הכותרת של כל עמודה בטבלה.

לבסוף הדפסתי PID , בעלים , זיכרון (ב- KB) ו- פקודה של כל תהליכים בפורמט טבלאי באמצעות שורה 14.

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

כדי לתקן זאת הסרתי מיין -bnr -k3 משורה 3 ועטף הכל בפונקציית מעטפת sysmon_main () . ואז השאיר את מלאכת המיון ל סוג פקודה.

סקריפט המעטפת הסופי נראה בערך כך:

כפי שאתה יכול לראות, זה עובד מצוין.

עכשיו אתה יכול להעביר אותו למקום כמו /usr/bin ולבצע אותו בדיוק כמו פקודות אחרות כדלקמן:

$סודו mv -vסיסמון/usr/אני

מְבַצֵעַ סיסמון :

תודה שקראת מאמר זה.