إينوتيفاي

يُعدّ inotify ( إشعار عقدة الملف ) نظامًا فرعيًا لنواة لينكس، أنشأه جون مكوتشان، وهو يراقب التغييرات التي تطرأ على نظام الملفات ، ويُبلغ التطبيقات بها. يُمكن استخدامه لتحديث طرق عرض الدلائل تلقائيًا، وإعادة تحميل ملفات التكوين، وتسجيل التغييرات، والنسخ الاحتياطي، والمزامنة، والتحميل. تسمح أوامر inotifywait و inotifywatch (التي يُشرف عليها إريك كورتين كجزء من مشروع inotify-tools) باستخدام نظام inotify الفرعي من سطر الأوامر. [ 1 ] يُستخدم بشكل أساسي في أدوات البحث المكتبية مثل Beagle، حيث تُتيح وظيفته إعادة فهرسة الملفات المُعدّلة دون الحاجة إلى فحص نظام الملفات بحثًا عن التغييرات كل بضع دقائق، وهو ما يُعدّ غير فعّال للغاية.

حلّت أداة inotify محلّ أداة dnotify السابقة ، التي كانت لها أهداف مماثلة. دُمجت inotify في نواة لينكس الرئيسية في الإصدار 2.6.13، الصادر في 29 أغسطس 2005؛ [ 2 ] وتضمنت الإصدارات اللاحقة من النواة تحسينات إضافية. أُضيفت واجهات المكتبة المطلوبة إلى مكتبة GNU C (glibc) في إصدارها 2.4، الصادر في مارس 2006، بينما اكتمل دعم inotify في إصدار glibc 2.5، الصادر في سبتمبر 2006. [ 3 ]

القيود

تشمل القيود التي يفرضها برنامج inotify ما يلي:

  • لا يدعم Inotify مراقبة الدلائل بشكل متكرر، مما يعني أنه يجب إنشاء عملية مراقبة منفصلة لكل دليل فرعي. [ 4 ] في المقابل، يوفر الأمر inotifywait مراقبة الدلائل بشكل متكرر. [ 5 ]
  • يقوم Inotify بالإبلاغ عن بعض الأحداث في sysfs و procfs وليس كلها .
  • يتطلب الإخطار عبر inotify أن تكون النواة على دراية بجميع أحداث نظام الملفات ذات الصلة، وهو أمر ليس ممكنًا دائمًا لأنظمة الملفات الشبكية مثل NFS حيث لا يتم بث التغييرات التي يجريها عميل واحد على الفور إلى العملاء الآخرين.
  • لا يتم التعامل مع أحداث إعادة التسمية بشكل مباشر؛ أي أن inotify يصدر حدثين منفصلين يجب فحصهما ومطابقتهما في سياق ظروف التنافس المحتملة.

تاريخ

  • يوليو 2004: الإعلان الأول عن الإصدار [ 6 ]
  • 29 أغسطس 2005: تم إصدار نواة لينكس الإصدار 2.6.13، والتي تحتوي على كود inotify المدمج [ 2 ]
  • مارس 2006: تم إصدار مكتبة GNU C (glibc) الإصدار 2.4، مما أدى إلى توفير دعم inotify الأولي [ 3 ]
  • سبتمبر 2006: تم إصدار الإصدار 2.5 من Glibc، والذي يوفر دعمًا كاملاً لـ inotify [ 3 ]

مزايا مقارنة بـ dnotify

يُوفر استخدام inotify العديد من المزايا مقارنةً بواجهة برمجة التطبيقات dnotify القديمة التي حلّت محلها. [ 7 ] [ 8 ] [ 9 ] مع dnotify، كان على البرنامج استخدام مُعرّف ملف واحد لكل دليل يُراقبه. وقد يُصبح هذا الأمر عائقًا نظرًا لاحتمالية الوصول إلى الحد الأقصى لمُعرّفات الملفات لكل عملية. لاحقًا، تم تطوير fanotify للتغلب على هذه المشكلة. كما تبيّن أن استخدام مُعرّفات الملفات مع dnotify يُشكّل مشكلةً عند استخدام وسائط التخزين القابلة للإزالة، حيث لا يُمكن فصل الأجهزة لأن مُعرّفات الملفات تُبقي الموارد مشغولة.

من عيوب dnotify الأخرى مستوى التفصيل، إذ لا يستطيع المبرمجون مراقبة التغييرات إلا على مستوى الدليل. وللوصول إلى معلومات تفصيلية حول التغييرات البيئية التي تحدث عند إرسال رسالة إشعار، يجب استخدام بنية بيانات إحصائية (stat structure)؛ وهذا يُعدّ ضرورة لا مفر منها، إذ يتطلب الأمر الاحتفاظ بنسخة احتياطية من هذه البنية، حيث تُجرى مقارنة مع النسخة المخزنة لكل بنية بيانات إحصائية جديدة يتم إنشاؤها.

تستخدم واجهة برمجة تطبيقات inotify عددًا أقل من مُعرّفات الملفات، مما يسمح للمبرمجين باستخدام واجهة select و poll المُعتمدة، بدلاً من نظام إشعارات الإشارة الذي يستخدمه dnotify . وهذا يُسهّل أيضًا التكامل مع المكتبات الموجودة القائمة على select أو poll (مثل GLib ).

انظر أيضاً

مراجع

  1. ويكي أدوات inotify
  2. 1 2 لينكس 2.6.13، kernelnewbies.org
  3. 1 2 3 صفحة دليل inotify
  4. روبرت لوف، برمجة أنظمة لينكس . أورايلي، ص 236
  5. دليل مستخدم لينكس – أوامر المستخدم من Manned.orginotifywait(1)  
  6. "fa.linux.kernel post [ RFC ] [ PATCH ] inotify 0.8" . 29-07-2004 . تم الاطلاع عليه بتاريخ 19-08-2013 .
  7. مايكل كيريسك (14 يوليو 2014). "إشعار نظام الملفات، الجزء 2: دراسة معمقة لـ inotify" . LWN.net .
  8. إيلي إم. داو (31 مايو 2005). "مراقبة أحداث نظام ملفات لينكس باستخدام Inotify؛ لماذا Inotify؟" . مؤرشف من الأصل في 16 يناير 2010.
  9. ملف README الخاص بـ inotify