אם היית מנהל זמן רב כלשהו, בהחלט גילית מצבים שבהם שרת משפר את השימוש במעבד או את השימוש בזיכרון ו / או ברמות העומס. גם ריצה של 'עליון' לא תמיד תתן לך את התשובה. אז איך תמצאו את התהליכים הערמומיים האלה שלוקעים את משאבי המערכת שלכם כדי להיות מסוגלים להרוג אותם?
התסריט הבא יכול לעזור. הוא נכתב עבור שרת אינטרנט, וכך יש חלקים ממנו המחפשים ספציפי תהליכי httpd וחלקים העוסקים ב- MySQL. תלוי בפריסת השרת שלך, פשוט הגב / מחק את החלקים האלה והוסף אחרים. יש להשתמש בו לנקודת התחלה.
תנאים מוקדמים לגרסה זו של התסריט הם תוכנה חופשית ששוחררה תחת הרישיון הציבורי הכללי של GNU הנקרא mytop (זמין בכתובת:
http://jeremy.zawodny.com/mysql/mytop/
) שהוא כלי נהדר לבדיקת ביצועי MySQL. זה מזדקן, אבל עדיין עובד מצוין למטרות שלנו כאן.
בנוסף, אני משתמש ב- mutt בתור הדיוור - ייתכן שתרצה לשנות את הסקריפט כדי פשוט להשתמש בלינוקס המובנה בכלי השירות 'דואר'. אני מריץ אותו דרך קרון כל שעה; התאם כראות עיניך. אה - וסקריפט זה צריך לפעול כשורש מכיוון שהוא קורא מכמה אזורים מוגנים בשרת.
אז בוא נתחיל, נכון?
ראשית, הגדר את משתני הסקריפט שלך:
#! / Bin / Bash
#
# סקריפט לבדיקת רמות הממוצע של עומס המערכת כדי לנסות לקבוע
# אילו תהליכים לוקחים את זה גבוה מדי ...
#
# 07 Jul2010 tjones
#
# סביבה מוגדרת
dt = `תאריך +% d% ב% Y-% X`
# ברור, שנה את הספריות הבאות במקום בו נשמרים למעשה קבצי היומן שלך
tmpfile = "/ tmp / checkSystemLoad.tmp"
logfile = "/ tmp / checkSystemLoad.log"
msgLog = "/ var / log / messages"
mysql Log = "/ var / log / mysqld.log"
# תחנת הדואר הראשונה היא דוא"ל רגיל לדוחות. השני הוא לטלפון סלולרי (עם דוח מורחק)
mailstop = "[email protected]"
mailstop1 = "[email protected]"
מכונה = `שם מארח`
# השלושה הבאים מיועדים לשימוש ב- mytop - השתמשו במשתמש db שיש לו זכויות ראויות
dbusr = "שם משתמש"
dbpw = "סיסמה"
db = "שם בסיס הנתונים שלך"
# להלן רמת העומס שצריך לבדוק - 10 היא ממש גבוהה, אז כדאי לך להוריד אותה.
levelToCheck = 10
לאחר מכן, בדוק את רמת העומס שלך כדי לראות אם הסקריפט צריך להמשיך:
# הגדר משתנים מהמערכת:
loadLevel = `cat / proc / loadavg | awk '{print $1}'
loadLevel = $ (printf "% 0.f" $ loadLevel)# אם רמת העומס גדולה ממה שאתה רוצה, התחל את תהליך הסקריפט. אחרת, צא 0
אם [ $loadLevel -gt $levelToCheck ]; לאחר מכן
הד ""> $ tmpfile
הד "**************************************" >> $ tmpfile
הד "תאריך: $ dt" >> $ tmpfile
הד "בדוק עומס מערכת ותהליכים" >> $ tmpfile
הד "**************************************" >> $ tmpfile