جدول المحتويات:
- الخطوة 1: استخدام الأساليب التي يوفرها Systemd
- الخطوة 2: تكوين واستخدام البرامج النصية لمدقق الخدمة
- الخطوة الثالثة: الأفكار النهائية
فيديو: البرنامج النصي لمراقبة الخدمة لخوادم Linux: 4 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:41
قد يكون امتلاك نظام ثابت يعمل دائمًا ، حتى لو كنت تستخدم Linux مهمة صعبة.
نظرًا لتعقيد حزم البرامج الحديثة والتشفير السيئ ، قد تتعطل بعض العمليات حتماً من وقت لآخر. قد يكون هذا أمرًا سيئًا إذا كنت تقوم بتشغيل خادم ويعتمد بعض الأشخاص على هذه الخدمات.
الخطوة 1: استخدام الأساليب التي يوفرها Systemd
كما تعلم بالفعل ، فإن معظم أنظمة تشغيل Linux الحديثة تستخدم systemd.
إذا لم تكن معتادًا على نظام systemd ، فهذا بحسب ويكيبيديا:
"… نظام init مستخدم في توزيعات Linux لإقلاع مساحة المستخدم وإدارة جميع العمليات لاحقًا ، بدلاً من أنظمة بدء UNIX System V أو Berkeley Software Distribution (BSD). …"
لا يزال الكثير من الناس يتجادلون حول سبب ضرورة استبدال نظام init القديم الجيد بنظام إدارة العمليات الأكثر تعقيدًا ، ولكن على الرابط التالي قد يجد المرء تفسيرًا جيدًا:
www.tecmint.com/systemd-replaces-init-in-l…
سيكون التحسين الأكثر أهمية هو أنه قادر على إحضار النظام بشكل أسرع من init ، بسبب المعالجة المتزامنة والمتوازية عند التمهيد بدلاً من النهج التسلسلي لـ init.
دون الخوض في أعماق systemd ، من أجل إضافة عملية إلى systemd ، يجب عليك إنشاء ملف خدمة. يمكن أن يتراوح بناء جملة مثل هذا الملف من بسيط جدًا إلى معقد تمامًا ، ولن ندخل في التفاصيل. من أجل الحصول على ملف خدمة أساسي ، يكفي استخدام الإدخالات التالية:
[الوحدة] الوصف = وصف applicationDocumentation = https://wikipedia.org/ After = local-fs.target network.target [الخدمة] النوع = 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
ملاحظة: يمكن حذف ملحق الخدمة.
لإيقاف التطبيق:
sudo systemctl توقف application.service
إذا تم تغيير ملف التكوين وتريد إعادة تحميل الإعدادات:
sudo systemctl إعادة تحميل application.service
لإعادة تشغيل التطبيق:
sudo systemctl إعادة تشغيل application.service
لتمكين البدء التلقائي عند التمهيد:
يتيح sudo systemctl application.service
إذا تم تمكين هذا ، فسيحاول مدير عملية systemd بدء تشغيل التطبيق بناءً على الإعدادات التي تم توفيرها بواسطة ملف النظام.
لتعطيله ، استخدم نفس الأمر على النحو الوارد أعلاه ، ولكن مع معلمة "تعطيل".
إذا قمت بوضع 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 ، من الريبو أعلاه ، في حالة تعطل خدمة البريد العشوائي ، يجب إعادة تشغيل خدمة البريد العشوائي بدلاً من ذلك ، مما يؤدي أيضًا إلى إعادة تشغيل البريد العشوائي. إعادة تشغيل الرسائل غير المرغوب فيها فقط لن تكون كافية.
يمكن للمرء تحرير محتوى ملف serv مثل هذا وفقا للاحتياجات.
مثال آخر هو ملف pcscd.serv. في هذه الحالة ، تم أيضًا إعادة تشغيل / قتل العديد من العمليات الأخرى.
إذا كان هناك ملف فحص ، فبعد التحقق مما إذا كانت العملية قيد التشغيل ، سيتم أيضًا تشغيل ملف البرنامج النصي هذا لإجراء فحوصات إضافية.
على سبيل المثال ، بالنسبة لخدمة oscam ، قمنا بإنشاء ملف تحقق يحاول الاتصال بواجهة الويب الخاصة به لمعرفة ما إذا كان ناجحًا أم لا. إذا لم يكن الأمر كذلك ، فبالرغم من تنشيط العملية ، فإن الخدمة لا تستجيب وتحتاج إلى إعادة التشغيل. يجب إجراء / استدعاء إعادة تشغيل الخدمة بواسطة ملف.check نفسه.
مثال آخر هو خدمة DLNA ميدياتومب.
هذا خادم صغير يوفر محتوى فيديو / صوتي لعملاء DLNA ويبث نفسه على الشبكة. في بعض الأحيان تتوقف الخدمة ولا يمكن اكتشافها بعد الآن ، ولكن العملية ستظل نشطة. للتحقق مما إذا كانت الخدمة قابلة للاكتشاف ، تم استخدام الأداة المساعدة CLI المسماة gssdp-Discover. تم وضع الكود الكامل الذي يتحقق من خادم DLNA داخل برنامج نصي mediatomb.check.
هذه مجرد أمثلة قليلة حول كيفية استخدام ملفات.serv و.check.
من أجل مراقبة خدمة جديدة ، يجب عليك إنشاء ملف.serv ، وإذا لزم الأمر أيضًا ملف فحص وكتابة البرنامج النصي المقابل بداخلهما.
إذا كان التحقق من وجود العملية كافيًا فقط ، فسيكون ملف.serv فارغًا كافيًا. إذا كان لا بد من إجراء فحوصات إضافية ، فيجب إنشاء ملف فحص وكتابة نص صغير للقيام بالمهمة.
من Cource ، يجب تشغيل البرنامج النصي.sh بشكل دوري ، لذلك يجب أيضًا إنشاء وظيفة cron له:
# تحقق من تشغيل الخدمات كل 5 دقائق * / 5 * * * * /var/bin/ServiceCheck/checkService.sh> / dev / null
الخطوة الثالثة: الأفكار النهائية
آمل أن تجد هذه الحزمة مفيدة حيث يمكنها ببساطة مراقبة عمليات Linux ونأمل أن تقلل من وقت تعطل خدماتك.
لا تتردد في تحميل نصوص إضافية على جيثب ، إذا قمت بإنشاء برامج نصية جديدة. فقط أعلمني وسأضيفك كمساهم.
موصى به:
روبوت الخدمة: 8 خطوات
روبوت الخدمة: سيكون هذا الروبوت مساعدًا موثوقًا به في جميع عروضك. يأتي الروبوت بالعديد من الأطراف المتحركة والرأس الدوارة والعجلات الدوارة ، وهناك 7 خيارات لونية للجسم وخياران للعيون
برنامج تشفير البرنامج النصي المطاطي USB (VBScript): 5 خطوات
USB Rubber Ducky Script Encoder (VBScript): إذا كان لديك USB Rubber Ducky ، فستعرف أن مهمة مزعجة للغاية تتمثل في تجميع البرنامج النصي الخاص بك إلى ملف a.bin. إذا كان عليك القيام بأي نوع من تصحيح الأخطاء ، فستعرف أن التنزيل المستمر للنص البرمجي المترجم يمكن أن يكون بمثابة ألم. إذن لإصلاح هذا
مقدمة عن البرنامج النصي VB: دليل المبتدئين: 11 خطوة
مقدمة إلى البرنامج النصي VB: دليل المبتدئين: *** (((((تنبيه: على الرغم من وجود الكثير من الخطوات. هذا في الواقع سهل للغاية. أنا فقط أشرح كل شيء بالتفصيل للمبتدئين. إذا كنت تريد فقط الانتقال إلى الكود الخطوة الأخيرة وستجد الرمز الكامل هناك.)))) *** ألعب كثيرًا من أجهزة Xbox
فيروس الأميبا المخيف باستخدام البرنامج النصي الدفعي: 3 خطوات
The Dreaded Amoeba Virus باستخدام Batch Script: إذا كنت مهتمًا بالتشفير أو البرمجة النصية المجمعة ، فراجع أحدث إصدار من Ible هنا. لقد تعلمت عن البروتيستا في صفي الحيوي. وصلنا إلى البحث عن الأميبا الحية تحت المجهر. لا فائدة كبيرة في الحياة ، لكنها أعطتني فكرة عما سأطلق عليه اسم v
مقدمة عن البرنامج النصي VB: دليل المبتدئين: الجزء 2: العمل مع الملفات: 13 خطوة
مقدمة إلى برنامج VB Script: دليل المبتدئين: الجزء 2: العمل مع الملفات: حسنًا ، في آخر تعليمات VBScript لدي ، قمت بمراجعة كيفية عمل برنامج نصي لإغلاق الإنترنت لتشغيل Xbox360. اليوم لدي مشكلة مختلفة. تم إغلاق جهاز الكمبيوتر الخاص بي في أوقات عشوائية وأريد تسجيل الدخول في كل مرة يقوم فيها الكمبيوتر