قمت بتشغيل عدة عمليات خلفية لاستراتيجية، وتعرضت لخسارة:


من الواضح أن العملية تعمل، والبيانات جديدة، لكن PM2 يظهر أنها متوقفة.
إذا وثقت في إعادة التشغيل المباشر من PM2، فإن ذلك يقطع العمليات التي لا تزال تعمل.
ثم أدركت أن: PM2 / launchd / ملف pid، كلها مجرد سجلات لحالة الحماية — هل قاموا بتسجيل العملية أم لا، وأن يكون العملية فعلاً قيد التشغيل هو أمر مختلف.
الأمر الحقيقي يعتمد على ملف الصحة الذي تنتجه العملية بنفسها — آخر تحديث قبل بضع دقائق + عدد العمليات يتطابق = على قيد الحياة.
كتبت سكربت فحص دوري، وكل عملية تُبلغ عن 4 قيم في وقت واحد:
- هل العملية موجودة (باستخدام أمر ps)
- هل سجلها PM2 / launchd
- متى تم تحديث ملف الصحة آخر مرة
- هل الثلاثة تتطابق
طالما أن ملف الصحة محدث، لا تعتبر العملية ميتة.
درس من الهندسة: لتحديد "هل النظام حي أم لا"، لا تعتمد على ما تقوله طبقة الحماية التي بنيتها، بل على ما تنتجه العمليات نفسها من بيانات حديثة.
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • تعليق
  • إعادة النشر
  • مشاركة
تعليق
إضافة تعليق
إضافة تعليق
لا توجد تعليقات
  • تثبيت