incrontab(5) مستندات incron incrontab(5)

incrontab - جداول برای دیمن inotify cron (incrond)

یک پرونده incrontab حاوی دستورالعمل‌هایی برای دیمن incrond(8) به شکل کلی: «اجرای این دستور هنگام وقوع این رویدادهای فایلی» است. دو دسته جدول وجود دارد: جداول سیستمی (با دسترسی‌های root) و جداول کاربری (با دسترسی‌های کاربر).

جداول سیستمی (به‌طور پیش‌فرض) در مسیر /etc/incron.d قرار دارند و می‌توانند هر نامی داشته باشند. هر جدول سیستمی به‌صورت جداگانه در داخل incron وجود دارد و پایش‌های آن‌ها هرگز با یکدیگر تداخل ندارند.

هر کاربر جدول اختصاصی خود را دارد، و دستورات موجود در هر incrontab با دسترسی کاربری که مالک آن است اجرا خواهند شد. کاربران سیستمی (مانند apache، postfix، nobody و غیره) نیز می‌توانند incrontab اختصاصی خود را داشته باشند.

پرونده‌های incrontab هنگام راه‌اندازی دیمن incrond(8) و پس از هرگونه تغییر خوانده می‌شوند (پرونده‌های incrontab در زمان اجرای incrond متصل و قلاب می‌شوند).

خطوط خالی و خطوطی که با علامت هش (#) آغاز می‌شوند نادیده گرفته می‌شوند. قالب کلی خطوط به شرح زیر است:

<path> <mask> <command>

که در آن path یک مسیر مطلق در سامانه پرونده، mask یک ماسک رویداد (به صورت نمادین یا عددی) و command یک پرونده اجرایی (یا یک اسکریپت) به همراه آرگومان‌های آن است. نمادهای ماسک رویداد در زیر توضیح داده شده‌اند. پرونده اجرایی را می‌توان به صورت یک مسیر مطلق یا تنها نام آن مشخص کرد (مسیرهای متغیر PATH بررسی می‌شوند).

لطفاً به یاد داشته باشید که هر مسیر تنها یک بار در هر جدول می‌تواند تکرار شود (در غیر این صورت تنها اولین مورد اعمال شده و پیام خطایی در گزارش‌های سیستم ثبت می‌شود).

لطفاً توجه داشته باشید که استفاده از نویسه عام * برای پایش محدوده‌ای از فایل‌ها مجاز است.

این نمادهای پایه برای ماسک رویداد تعریف شده‌اند:

IN_ACCESS 		دسترسی به فایل (خواندن) (*)
IN_ATTRIB 		تغییر متاداده (مجوزها، برچسب‌های زمانی، ویژگی‌های گسترده و غیره) (*)
IN_CLOSE_WRITE 	بسته شدن فایلی که برای نوشتن باز شده بود (*)
IN_CLOSE_NOWRITE 	بسته شدن فایلی که برای نوشتن باز نشده بود (*)
IN_CREATE 		ایجاد فایل/دایرکتوری در دایرکتوری مورد پایش (*)
IN_DELETE 		حذف فایل/دایرکتوری از دایرکتوری مورد پایش (*)
IN_DELETE_SELF 		حذف خود فایل/دایرکتوری مورد پایش
IN_MODIFY 		تغییر و اصلاح فایل (*)
IN_MOVE_SELF 		جابه‌جایی خود فایل/دایرکتوری مورد پایش
IN_MOVED_FROM 		انتقال فایل به بیرون از دایرکتوری مورد پایش (*)
IN_MOVED_TO 		انتقال فایل به درون دایرکتوری مورد پایش (*)
IN_OPEN 			باز شدن فایل (*)

هنگام پایش یک دایرکتوری، رویدادهایی که با ستاره (*) در بالا مشخص شده‌اند می‌توانند برای فایل‌های درون آن دایرکتوری رخ دهند؛ در این حالت، فیلد نام در داده‌های رویداد بازگردانده‌شده، نام فایل درون دایرکتوری را مشخص می‌کند.

نماد IN_ALL_EVENTS به عنوان ماسک بیتی از تمام رویدادهای بالا تعریف شده است. دو نماد تسهیل‌کننده دیگر عبارتند از IN_MOVE که ترکیبی از IN_MOVED_FROM و IN_MOVED_TO است، و IN_CLOSE که IN_CLOSE_WRITE و IN_CLOSE_NOWRITE را ترکیب می‌کند.

نمادهای زیر نیز می‌توانند در ماسک تعیین شوند:

IN_DONT_FOLLOW 	دنبال نکردن مسیر در صورت پیوند نمادین بودن
IN_ONESHOT 		پایش مسیر تنها برای یک رویداد
IN_ONLYDIR 		پایش مسیر تنها در صورتی که دایرکتوری باشد

علاوه بر این، نمادی وجود دارد که در مجموعه نمادهای inotify دیده نمی‌شود: نماد loopable=true. این نماد پایش رویدادها را تا زمانی که رویداد کنونی به طور کامل رسیدگی شود (تا زمانی که فرآیند فرزند خارج شود) غیرفعال می‌کند.

همچنین نماد recursive=false وجود دارد. این نماد پایش را به دایرکتوری مشخص‌شده محدود کرده و شامل زیردایرکتوری‌ها نمی‌شود.

در نهایت نماد dotdirs=true نیز وجود دارد. این نماد دایرکتوری‌های پنهان (که نامشان با نقطه آغاز می‌شود) را در پایش لحاظ می‌کند.

نویسه‌های عام زیر می‌توانند در مشخصات دستور به کار روند:

$$	علامت دلار
$@	مسیر سامانه پرونده مورد پایش (به بالا مراجعه کنید)
$#	نام فایل مرتبط با رویداد
$%	فلگ‌های رویداد (به صورت متنی)
$&	فلگ‌های رویداد (به صورت عددی)

این‌ها نمونه قواعدی هستند که می‌توان در یک پرونده incrontab استفاده کرد:

/tmp IN_ALL_EVENTS abcd $@/$# $%
/usr/bin IN_ACCESS,loopable=true abcd $#
/home IN_CREATE /usr/local/bin/abcd $#
/home IN_CREATE,dotdirs=true /usr/local/bin/abcd $#
/home IN_CREATE,recursive=false /usr/local/bin/abcd $#
/var/log 12 abcd $@/$#

خط اول تمام رویدادهای دایرکتوری /tmp را پایش می‌کند. هنگامی که رویدادی رخ دهد، برنامه‌ای به نام 'abcd' را با مسیر کامل فایل به عنوان آرگومان اول و فلگ‌های رویداد به عنوان آرگومان دوم اجرا می‌کند.

خط دوم دسترسی‌ها (خواندن‌ها) در دایرکتوری /usr/bin را پایش می‌کند. برنامه 'abcd' به عنوان گرداننده اجرا شده و پایش رویداد مربوطه تا پایان برنامه غیرفعال می‌شود. نام فایل (بدون مسیر دایرکتوری) به عنوان یک آرگومان منتقل می‌شود.

مثال سوم برای پایش دایرکتوری /home جهت شناسایی فایل‌ها یا دایرکتوری‌های جدیداً ایجاد شده به کار می‌رود (عملاً بدین معناست که هنگام افزوده شدن کاربر جدید، یک رویداد ارسال می‌شود). این رویداد توسط برنامه‌ای که با مسیر مطلق مشخص شده پردازش می‌گردد.

مثال چهارم همانند مثال سوم است، اما دایرکتوری‌های پنهان را نیز در پایش لحاظ می‌کند.

مثال پنجم همانند مثال سوم است، اما زیردایرکتوری‌ها را از پایش مستثنی می‌کند.

خط پایانی نشان می‌دهد که چگونه می‌توان از ماسک رویداد عددی به جای متنی استفاده کرد. مقدار 12 دقیقاً معادل IN_ATTRIB,IN_CLOSE_WRITE است.

incrond(8)، incrontab(1)، incron.conf(5)

Andreas Altair Redmer <altair.ibn.la.ahad.sy@gmail.com> (لطفاً اشکالات را به https://github.com/ar-/incron/issues گزارش دهید).
Lukas Jelinek <lukas@aiken.cz> .

این برنامه یک نرم‌افزار آزاد است. می‌توان از آن استفاده کرد، آن را بازتوزیع نمود و/یا تحت شرایط پروانه عمومی همگانی گنو (GPL)، نسخه ۲، تغییر داد.

0.5.12 Lukas Jelinek