۱۴-تير-۱۳۹۳, ۲۲:۰۱:۵۸
گاهی اوقات لازم هست به محض اینکه تغییری در فایل یا پوشهای ایجاد؛ ما خبردار بشیم و بتونیم یکسری از کارها رو انجام بدیم
با استفاده از نرم افزار inotifywait میتونیم هرگاه فایلی و پوشهای مورد دسترسی، نوشتن، خواندن، تغییر خصوصیات و . . قرار بگیره ما خبردار بشیم؛
برای مثال:
پوشه ای داریم بنام ۱۲۳ ؛ هدف این هروقت فایلی در این پوشه ایجاد شد به ما هشدار بده:
مرحله اول میریم داخل پوشه ۱۲۳:
دستور زیر رو احرا میکنیم:
پارامتر m یعنی حالت monitor رو فعال میکنه؛ در حالت معمولی بعد از دریافت یک اتفاق؛ اجرای برنامه تموم میشه ولی با m برنامه ادامه پیدا میکنه تا وقتی کاربر سگنال پایان رو بهش ارسال کنه (ctrl + c)
با پارامتر e هم میتونیم تعیین کنیم در چه مواقعی هشدار بده؛ هنگام ایجاد فایلِ، هنگام دسترسی، هنگام نوشتن، هنگام ایجاد ....
. هم یعنی در پوشهی جاری
بعد از اینکه یه فایل در این پوشه ایجاد کنیم؛ بنرامه بالا چنین پیغامی میده:
که یعنی فایل بنام salam ایحاد شده
و اگه پوشه ایجاد کنیم:
که یعنی پوشهای (ISDIR) بنام ff ایحاد شده
توسط پارامتر format میتونیم نوع خروی رو هم تعیین کنیم:
برای مثال:
با استفاده از
تعیین کردیم در خروجی اول نام فایل رو بنویسه و بعد یک "," و سیپس نوع اتفاقی افتاده؛ که خرجی چنین میشه:
خط اول یعنی یک پوشه بنام fs ایحاد شده
خط دوم یعنی یک فایل بنام salam2 ایحاد شده
همچنین میتونیم این خروجی ها رو در یک حلقه بندازیم و مل اتفاقات رو مدیریت کنیم:
هربار که اتفاقی رخ بده برنامه اجرا میشه و میتونیم کارهایی که مدنظر رو انجام بدیم..
اطلاعات بیشتر:
http://linux.die.net/man/1/inotifywait
منبع هم خودم
با استفاده از نرم افزار inotifywait میتونیم هرگاه فایلی و پوشهای مورد دسترسی، نوشتن، خواندن، تغییر خصوصیات و . . قرار بگیره ما خبردار بشیم؛
برای مثال:
پوشه ای داریم بنام ۱۲۳ ؛ هدف این هروقت فایلی در این پوشه ایجاد شد به ما هشدار بده:
مرحله اول میریم داخل پوشه ۱۲۳:
کد:
cd 123
کد:
inotifywait -m -e create .
پارامتر m یعنی حالت monitor رو فعال میکنه؛ در حالت معمولی بعد از دریافت یک اتفاق؛ اجرای برنامه تموم میشه ولی با m برنامه ادامه پیدا میکنه تا وقتی کاربر سگنال پایان رو بهش ارسال کنه (ctrl + c)
با پارامتر e هم میتونیم تعیین کنیم در چه مواقعی هشدار بده؛ هنگام ایجاد فایلِ، هنگام دسترسی، هنگام نوشتن، هنگام ایجاد ....
. هم یعنی در پوشهی جاری
بعد از اینکه یه فایل در این پوشه ایجاد کنیم؛ بنرامه بالا چنین پیغامی میده:
کد php:
./ CREATE salam
و اگه پوشه ایجاد کنیم:
کد php:
./ CREATE,ISDIR ff
توسط پارامتر format میتونیم نوع خروی رو هم تعیین کنیم:
برای مثال:
کد php:
inotifywait -m -e create --format "%f,%e" .
کد:
"%f,%e"
کد:
fs,CREATE,ISDIR
salam2,CREATE
خط دوم یعنی یک فایل بنام salam2 ایحاد شده
همچنین میتونیم این خروجی ها رو در یک حلقه بندازیم و مل اتفاقات رو مدیریت کنیم:
کد:
while read j
do
echo $j
done < <(inotifywait -m -e create --format "%f,%e" . )
هربار که اتفاقی رخ بده برنامه اجرا میشه و میتونیم کارهایی که مدنظر رو انجام بدیم..
اطلاعات بیشتر:
http://linux.die.net/man/1/inotifywait
منبع هم خودم