الأخبار التكنولوجية والاستعراضات والنصائح!

كيفية تنفيذ مهمة عند إضافة ملف جديد إلى دليل في Linux

يوضح لك هذا البرنامج التعليمي كيفية استخدام أحداث نظام ملفات Linux (الإخطار) لتلقي الإشعارات في كل مرة يظهر فيها ملف في دليل. يمكنك استخدام هذه المشغلات لأتمتة المهام الشائعة على نظامك.

سنكتب نصًا يراقب دليلًا ويعمل على الملفات الجديدة المضافة. يتم ضغط كل ملف بتنسيق gzip ويتم نقله إلى دليل مختلف بمجرد اكتشافه. يستخدم البرنامج النصي نظام inotify الفرعي ، من خلال أداة تسمى أدوات inotify. لكن أولاً ، دعنا نثبت الأداة ونجربها.

يثبت أدوات inotify و gzip

استخدم apt-get لتثبيت هذه الحزمة على نظامك إذا كنت تستخدم Ubuntu أو توزيعة أخرى قائمة على Debian. في توزيعات Linux الأخرى ، استخدم أداة إدارة الحزم الخاصة بتوزيع Linux بدلاً من ذلك.

sudo apt-get install inotify-tools gzip

تجربة أدوات التخمير

لنبدأ بالنظر في دليل ومعرفة الأحداث التي يتم إطلاقها عند وصول ملفات جديدة. سنستخدم أداة تسمى inotifywatch ، وهي جزء من أدوات inotify. أنشئ دليلًا جديدًا يسمى “inbox”:

مكدير وارد

ابدأ في عرض هذا الدليل عن طريق تنفيذ الأمر التالي:

inotifywatch -v الواردة

سيؤدي هذا إلى إرشاد inotify للبحث عن جميع أحداث نظام الملفات في الدليل “الوارد”. يتسبب الخيار -v في قيام الأداة المساعدة بطباعة معلومات إضافية حول ما تقوم به. لم نحدد خيار المهلة (-t) ، وسيستمر الأمر في جمع الأحداث حتى نخرج باستخدام CTRL + C. في هذه المرحلة ، يجب أن تبدو مطرافنا كما يلي:

افتح نافذة طرفية جديدة (أو علامة تبويب) وقم بالتغيير إلى الدليل الوارد. استخدم الأمر touch لإنشاء ملف جديد باسم “newfile”.

cd وارد / touch newfile

عد الآن إلى النافذة الطرفية الأولى وتوقف عن inotifywatch بالضغط على CTRL + C.

كيفية تنفيذ مهمة عند إضافة ملف جديد إلى دليل في Linux 1

سيتم تقديم جدول أحداث إلى وحدة التحكم ، مما يشير إلى مثيل “إنشاء” و “فتح” و “سمة” و “إغلاق_الكتابة”. حدثت هذه الأحداث الأربعة عندما استخدمنا اللمس لإنشاء ملف جديد ، وتعيين سمات الوصول إلى الملفات الخاصة به ، وفتحه لكتابة حرف إنهاء فارغ ، ثم إغلاقه. هذه ليست سوى بعض الأحداث العديدة التي يمكن مراقبتها على نظام الملفات باستخدام أداة inotify. يمكنك رؤية القائمة الكاملة على الصفحة الرئيسية inotifywatch.

لأغراضنا ، نحن مهتمون فقط بحدثين:

“create” – عندما يتم إنشاء ملف في الدليل الهدف. “move_to” – عندما يتم نقل ملف من مكان آخر إلى الدليل الهدف.

لنحاول inotifywatch مرة أخرى ، لكن هذه المرة نوجهه لمراقبة هذين الحدثين فقط. قم بتشغيل هذا الأمر في النافذة الطرفية الأولى:

inotifywatch -v -e create -e move_to الواردة

في نافذة أو علامة تبويب المحطة الطرفية الثانية ، دعنا نحاول إنشاء ملف جديد ، وتغيير محتوياته ، ثم نقل الملف من موقع آخر إلى الدليل الهدف. يتم تشغيل كل هذه الأوامر من الدليل الرئيسي.

لمس وارد / تم إنشاء اختبار الصدى

ارجع إلى النافذة الطرفية الأولى وأوقف inotifywatch بالضغط على CTRL + C. سنرى الناتج التالي:

كيفية تنفيذ مهمة عند إضافة ملف جديد إلى دليل في Linux 2

تم احتساب حدثين فقط: إنشاء ملف باسم “created.txt” ونقل ملف موجود باسم “created2.txt”. كل شيء آخر ، مثل تغيير “created.txt” ، تم تجاهله.

انظر إلى كتالوج وقم بتنفيذ مهمة

الآن بعد أن عرفنا الأحداث التي يجب اتباعها ، يمكننا استخدام أداة أخرى تسمى inotifywait لمنع التنفيذ حتى يتم إنشاء ملف أو نقله إلى دليل الهدف. سنستخدم نفس الحجج التي استخدمناها مع inotifywatch ونحدد أيضًا كيف نريد تنسيق اسم الملف لاستخدامه في مهمتنا.

قبل أن نبدأ ، نحتاج إلى دليل للملفات التي تمت معالجتها بالفعل. قم بإنشاء دليل يسمى “تمت معالجته”:

مكدير معالجتها

بعد ذلك ، أنشئ نصًا جديدًا يسمى “watch-incoming.sh” وأضف المحتوى أدناه:

#! / bin / bash TARGET = ~ / incoming / PROCESSED = ~ / معالجة / inotifywait -m -e create -e move_to –format “٪ f” $ TARGET | أثناء قراءة FILENAME do echo ، تم اكتشاف $ FILENAME ، تم نقل mv وضغطه “$ TARGET / $ FILENAME” “$ PROCESSED / $ FILENAME” gzip “$ PROCESSED / $ FILENAME”

يقوم البرنامج النصي بتشغيل الأمر inotifywait باستخدام الخيار -m. يؤدي هذا إلى تغيير مراقب الأوامر إلى أجل غير مسمى. في كل مرة يتم فيها اكتشاف حدث جديد ، يتم تمرير اسم الملف إلى الأمر read ويتم حقنه في المتغير “FILENAME”. يتم تنفيذ الكتلة الموجودة أسفل حلقة while ، حيث يتم نقل الملف أولاً إلى الدليل “المعالج” ثم يتم ضغطه بتنسيق gzip. سيتم استبدال الملف الأصلي بالملف المضغوط وسينتهي اسم الملف بـ “.gz”.

لنمنح حقوق التنفيذ لهذا البرنامج النصي ونشغله من دليل المنزل.

chmod u + x watch-incoming.sh ./watch-incoming.sh

افتح نافذة المحطة الثانية وأنشئ ملفًا جديدًا في دليل “inbox”. ضع قائمة بمحتويات كل من الدلائل “الواردة” و “المعالجة” لمشاهدة نتائج الحدث الذي يتم اكتشافه:

كيفية تنفيذ مهمة عند إضافة ملف جديد إلى دليل في Linux 3

تم اكتشاف الملف النصي الأولي الذي قمنا بنسخه إلى الدليل “الوارد” بواسطة البرنامج النصي ، وتم نسخه إلى “معالج” ثم ضغطه باستخدام gzip.

يمكننا القيام ببعض المهام الشيقة الآن حيث يمكننا التحقق من وصول الملفات الجديدة إلى الدليل. على سبيل المثال ، يمكننا إضافة علامة مائية إلى ملفات الصور ، وضغط مقاطع الفيديو الأولية إلى تنسيق mp4 ، وحتى تحميل كل ملف جديد نراه إلى ملف Amazon دلو S3. يعد هذا البرنامج النصي نقطة انطلاق جيدة لبدء سير العمل الخاص بك وأتمتة المهام الشائعة على نظامك.