תוכן עניינים:
- שלב 1: שימוש בשיטות הניתנות על ידי Systemd
- שלב 2: הגדרה ושימוש בסקריפטים של בודק השירותים
- שלב 3: מחשבות אחרונות
וִידֵאוֹ: סקריפט מוניטור שירות לשרתי לינוקס: 4 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:17
מערכת יציבה ותמיד פועלת, גם אם אתה משתמש ב- Linux יכולה להיות משימה קשה.
בשל מורכבותן של חבילות תוכנה מודרניות וקידוד גרוע, בהכרח תהליכים מסוימים עלולים לקרוס מדי פעם. זה יכול להיות דבר רע אם אתה מפעיל שרת וכמה אנשים מסתמכים על שירותים אלה.
שלב 1: שימוש בשיטות הניתנות על ידי Systemd
כפי שאתה כבר יודע, רוב מערכות ההפעלה המודרניות של לינוקס משתמשות ב- systemd.
אם אינך מכיר את systemd, זהו, על פי ויקיפדיה:
"… מערכת init המשמשת בהפצות לינוקס לאתחול שטח המשתמש וניהול כל התהליכים לאחר מכן, במקום מערכות ה- init של UNIX System V או Berkeley Software Distribution (BSD)."
הרבה אנשים עדיין מתווכחים מדוע היה צורך להחליף את מערכת ה- init הישנה והטובה במערכת ניהול תהליכים מסובכת יותר זו, אך בקישור הבא אפשר למצוא הסבר טוב:
www.tecmint.com/systemd-replaces-init-in-l…
השיפור החשוב ביותר יהיה בכך שהיא תוכל להעלות את המערכת מהר יותר מאשר init, בשל עיבוד במקביל ומקביל בעת האתחול במקום הגישה הרצינית של init.
מבלי להיכנס לעומק המערכת, על מנת להוסיף תהליך למערכת, עליך ליצור קובץ שירות. התחביר של קובץ כזה יכול לנוע בין פשוט מאוד למסובך לחלוטין, ולא ניכנס לפרטים. כדי שיהיה לך קובץ.service בסיסי, מספיק להשתמש בערכים הבאים:
[יחידה] תיאור = תיאור applicationDocumentation = https://wikipedia.org/ After = local-fs.target network.target [Service] Type = simpleExecStart =/usr/sbin/applicationExecReload =/usr/sbin/application reloadExecStop =/ usr/sbin/application stopRestart = תמיד [התקנה] WantedBy = multi-user.target
מקם אותם בקובץ application.service בתיקייה/lib/systemd/system.
מה שכל אחת מהאפשרויות הללו עושה מוסברת בקישור הבא:
access.redhat.com/documentation/en-US/Red_…
כדי להפעיל את היישום שלך, הנח את הפקודה הבאה:
sudo systemctl הפעל את application.service
הערה: ניתן להשמיט את סיומת.service.
כדי לעצור את היישום:
sudo systemctl עצור application.service
אם קובץ התצורה השתנה וברצונך לטעון מחדש את ההגדרות:
sudo systemctl טען מחדש application.service
כדי להפעיל מחדש את היישום:
sudo systemctl הפעלה מחדש של application.service
כדי לאפשר התחלה אוטומטית בעת האתחול:
sudo systemctl אפשר application.service
אם הדבר מופעל, מנהל התהליכים של המערכת ינסה להפעיל את היישום על סמך ההגדרות שסיפקו קובץ המערכת.
כדי להשבית אותו, השתמש באותה פקודה שלמעלה, אך עם פרמטר 'השבת'.
אם תמקם את Restart = תמיד בקובץ השירות, אז systemd יפקח על התהליך ואם לא ניתן למצוא אותו ברשימת התהליכים, הוא ינסה להפעיל אותו מחדש באופן אוטומטי.
אם אתה מציב
RestartSec = 30
לאחר הוראת ההפעלה מחדש, היא תחכה 30 שניות לפני שתנסה להפעיל מחדש את התהליך. זה עשוי להיות שימושי, שכן ניסיון הפעלה מחדש רציף של שירות/יישום כושל יכול להוביל לביקוש גבוה במערכת (כתיבת יומני שגיאות וכו ')
כפי שאתה יכול לראות, systemd כבר מספק כמה אמצעים לניטור התהליכים. עם זאת, במקרים מסוימים זה עשוי להיות לא מספיק. מה אם תהליך לא יוצא (הוא עדיין יופיע ברשימת התהליכים), אך הוא מפסיק להגיב. במקרה זה, על מנת לוודא שאכן תהליך פועל, ייתכן שתצטרך לבצע בדיקות נוספות.
כאן יועילו התסריטים מההנחיה הזו.
שלב 2: הגדרה ושימוש בסקריפטים של בודק השירותים
אם אתה צריך יותר שליטה בתהליכים/בשירותי הריצה שלך, סקריפטים אלה יעזרו, ללא ספק.
מכיוון שהקוד מעט גדול, הוא מועלה ל- github וניתן למצוא אותו במאגר הבא:
github.com/trex2000/Service-Monitor-Scripts/blob/master/checkService.sh
'הלב' של החבילה כולה הוא
checkService.sh
לפני השימוש בו, עליך להחליף את הנתיב המלא לתיקיית השירות. ניתן למצוא זאת בתחילת התסריט.
התסריט יכול לפקח על מספר תהליכים ולבצע משימות נוספות, כמתואר להלן:
הוא עובר כל קבצים מתוך תיקיית המשנה /services עם הרחבות.serv או.check ותבדוק אם יש תהליך פעיל שנקרא 'יישום'.
אם אין קובץ '.check' עבור יישום, רק קובץ application.serv:
אם התהליך פעיל, הוא יחשב את התהליך כפעיל
אם התהליך אינו פעיל, הוא יפעיל מחדש את השירות על ידי הוצאת הפקודה הבאה:
יישום הפעלה מחדש של systemctl
אם קובץ.serv ריק!
אם קובץ.serv אינו ריק ובעל זכויות הפעלה, הוא ינסה להריץ אותו כסקריפט BASH רגיל.
זה שימושי אם צריך לעשות משהו נוסף מלבד הפעלה מחדש של השירות.
לדוגמה, בקובץ spamd.serv, מתוך המאגר לעיל, במקרה ששירות ה- spamd מת, יש להפעיל את שירות spamassassin במקום זאת, אשר יפעיל גם את spamd. הפעלה מחדש של spamd בלבד לא תספיק.
אפשר לערוך את התוכן של קובץ serv כזה בהתאם לצרכים.
דוגמה נוספת היא הקובץ pcscd.serv. במקרה זה הופעלו/נהרגו גם מספר תהליכים אחרים.
אם יש קובץ צ'ק, לאחר בדיקה אם התהליך פועל, הוא יפעיל גם קובץ סקריפט זה לביצוע בדיקות נוספות.
לדוגמה, עבור שירות oscam, יצרנו קובץ צ'ק שמנסה להתחבר לממשק האינטרנט שלו כדי לראות אם הוא מצליח. אם לא, למרות שהתהליך פעיל, השירות אינו מגיב וצריך להפעיל אותו מחדש. הפעלה מחדש של השירות חייבת להתבצע/להתקשר על ידי קובץ ה-.check עצמו.
דוגמא נוספת תהיה שירות ה- DLNA של מדיאטומב.
זהו שרת קטן המספק תוכן וידאו/שמע ללקוחות DLNA ומשדר את עצמו ברשת. לפעמים השירות נתקע ואינו יכול לגלות יותר, אך התהליך עדיין יהיה פעיל. כדי לבדוק אם השירות ניתן לגילוי, נעשה שימוש בכלי השירות CLI בשם gssdp-discover. כל הקוד הבודק את שרת DLNA הונח בתוך סקריפט mediatomb.check.
אלו הן רק דוגמאות בודדות כיצד תוכל להשתמש בקבצי.serv ו-.check.
על מנת לעקוב אחר שירות חדש, עליך ליצור.serv ובמידת הצורך גם קובץ צ'ק ולכתוב את הסקריפט המתאים בתוכם.
אם רק בדיקת נוכחות התהליך אם מספיקה, קובץ.serv ריק יהיה מספיק. אם יש לבצע בדיקות נוספות, יש ליצור קובץ.check ולכתוב סקריפט קטן כדי לבצע את העבודה.
כמובן, סקריפט.sh צריך להיות מופעל מעת לעת, ולכן יש ליצור גם עבודת cron עבורו:
#בדוק שירותי הפעלה כל 5 דקות */5 * * * * /var/bin/ServiceCheck/checkService.sh>/dev/null
שלב 3: מחשבות אחרונות
אני מקווה שתמצא חבילה זו שימושית מכיוון שהיא יכולה מאוד לפקח על תהליכי לינוקס ובתקווה שתמזער את זמן ההשבתה של השירותים שלך.
אל תהסס להעלות סקריפטים נוספים ל- github, אם אתה יוצר חדשים. רק הודע לי ואוסיף אותך כתורם.
מוּמלָץ:
רובוט שירות: 8 שלבים
רובוט שירות: הרובוט הזה יהיה עוזר אמין בכל העיבודים שלך. הרובוט מגיע עם הרבה איברים נעים, ראש מסתובב וגלגלים מסתובבים. ישנן 7 אפשרויות צבע לגוף ו -2 אפשרויות לעיניים
גע במתג ON-OFF עם שירות UTSOURCE: 3 שלבים
מתג מגע-כיבוי עם שירות UTSOURCE: כבר יצרנו מתג מגע באמצעות טרנזיסטור NPN. אך למתג זה הייתה רק פונקציה אחת להפעלת המעגל אך לא הייתה אפשרות לכבות את המעגל מבלי לנתק את החשמל. במעגל זה, אנו הולכים לבנות מתג מגע
מוניטור CLOUD עם AWS & ARDUINO - ילד חשמלי: 6 שלבים
מוניטור CLOUD עם AWS & ARDUINO - נער חשמלי: זהו פרויקט פשוט - הדליקו אור כשמשהו משתבש … נהיה קהים יותר ויותר לקראת התראות עם כל כך הרבה לוחות מחוונים במחשבים שלנו בימינו, איך נוכל
מוניטור דופק דם: 3 שלבים
מוניטור דופק דם: אני מציג בפניך את הפרויקט השני שלי לאוניברסיטה שלי. ניתן להשתמש בפרויקט זה כדי לפקח על קצב פעימות הלב ורמות החמצן באמצעות מודול MAX 30100 ולהדפיס אותם ל- Nokia 5110 LCD. הוא גם מאחסן ערכים אלה בקובצי טקסט באמצעות קוד SD
מוניטור 3K: 8 שלבים
מוניטור מוניטור 3k: צריך לדעת אם דלת המוסך פתוחה? צריך לדעת אם נכנסת מספיק רחוק כדי שהדלת תיסגר מבלי לפגוע באופניים שלך? צריך לדעת את כל זה עם גישה לאינטרנט … אני מציג את צג המוסך 3000. כשהמכונית מגיעה למקום הנכון