fswatch یکی از ابزارهای چند platforme برای مانیتور تغییرات فایل در لینوکس میباشد که به محض تغییر محتوا در فایل ها یا دایرکتوری های خاص notification یا آلارم دریافت میکند.
همچنین توصیه میشود مطالعه کنید :
مانیتور یا دیتکت فایل ها و دایرکتوری های تازه ایجاد شده با استفاده از inotify-tools
این برنامه چهار نوع مانیتور روی سیستم عامل های متفاوت اجرا میکند مانند :
قابلیت های ابزار fswatch در linux
نحوه نصب ابزار fswatch در سیستم های لینوکسی
متاسفانه پکیج نصب fswatch به صورت پیش فرض در ریپازیتوری های سیستمی در هیچ کدام یک از توزیع های لینوکسی در دسترس نیستند. تنها راه نصب آخرین ورژن fswatch نصب از طریق source tarball میباشد که دستور العمل آن به شرح زیر است.
ابتدا آخرین فایل tarball ابزار fswatch را با استفاده از دستور wget دریافت و همانند زیر نصب میکنیم.
نکته : قبل از اینکه ابزار fswatch را از source کامپایل کنید، مطمئن شوید که روی سیستم تان development tools (در حقیقت پکیج build-essential روی سیستم عامل Debian/Ubuntu مد نظر است) و کامپایلر GNU GCC (در واقع compiler های C و C++ مد نظر است) نصب باشد. در صورتی که پیش نیازهای گفته شده در بالا (dependency) نصب نبودند از طریق دستورات زیر و با توجه به توزیع لینوکسی خو آنها را نصب کنید.
راهنمای رفع خطاها هنگام نصب fswatch :
روی توزیع های Debian/Ubuntu شما ممکن است به هنگام اجرا کردن دستور fswatch خطای زیر را دریافت کنید :
برای رفع آن شما نیاز دارید که دستور زیر را اجرا کنید. این دستور به بازخوانی (refresh) لینک ها و cashe کردن آنها به کتابخانه های داینامیک (Dynamic Library) کمک میکند (قبل از اینکه شما شروع به استفاده از fswatch کنید)
روی توزیع های RHEL/CentOS هم شما ممکن است هنگام نصب fswatch با خطای زیر روبه رو شوید :
برای رفع آن نیاز هست که دستورات زیر را اجرا کنید. ابتدا ورژن c++ نصب شده خود را بررسی کنید.
اگر ورژن شما gcc شما 4.4 باشد شما c++11 را ندارید در نتیجه شما باید gcc خودتان رابه روژن 4.8 یا بالاتر upgrade کنید. به هر حال اگر شما نمیخواهید که gcc پیشفرض را اپدیت کنید (زیرا ممکن است باعث اختلال در هر چیز دیگری شود) پس development libraries را نصب میکنیم و از کنترل برنامه برای switch در این shell استفاده میکنیم.
نصب ریپازیتوری devo
سپس سیستم خود را upgrade کنید :
سپس c++11 را نصب کنید :
و نهایتا از software collection برای فعال کردن آن در shell جاری استفاده میکنیم.
مجددا ورژن c++ خود را بررسی کنید :
نهایتا بعد از رفع مشکل ادامه نصب fswatch میپردازیم.
چگونه از ابزار fswatch در linux استفاده کنیم؟
ساختار کلی اجرای دستور fswatch به شرح زیر میباشد :
روی linux توصیه میشود که از مانیتور inotify پیش فرض استفاده کنید، شما میتوانید موارد در دسترس برای مانیتور کردن را با استفاده از آپشن -M یا --list-monitors را لیست و مشاهده کنید.
دستور زیر به شما این امکان را میدهد که تغییرات در دایرکتوری جاری (/root) را به همراه event های ارسال شده به standard output (هر 4 ثانیه یکبار) مشاهده کنید.
آپشن -l یا --latency به شما این امکان را میدهد که latancy را به ثانیه تعریف کنید که پیش فرض آن 1 ثانیه است.
دستور بعد تغییرات فایل /var/log/auth.log را هر 5 ثانیه یکبار مانیتور میکند.
با استفاده از آپشن -t یا --timestamp زمان مربوط به هر event را نمایش میدهد. برای نمایش زمان به فرمت UTC از آپشن -u یا --utf-time استفاده کنید. شما میتوانید همچنین فرمت time را با استفاده از آپشن -f یا --format-time تغییردهید.
سپس آپشن -x یا --event-flags به fswatch میگوید که flag های event را همراه با مسیر event ها نمایش بدهد. شما میتوانید از آپشن --event-field-seperator برای نمایش event ها با استفاه از seperator خاص (جدا کننده) استفاده کنید.
برای نمایش مقدارهای عددی یک event که نمایشگر تغییرات در دایرکتوری home شما و فایل /var/log/auth.log میباشد از آپشن -n یا --numeric همانند زیر استفاده کنید.
به احتمال زیاد با مشاهده صفحه man کامند fswatch آپشن های پراستفاده تر و اطلاعات ریزتری روی این دستور پیدا خواهید کرد.
برای اطلاعات بیشتر به ریپازیتوری github دستور fswatch مراجعه کنید.
همچنین توصیه میشود مقالات زیر را مطالعه کنید :
امنیت فایل ها و دایرکتوری ها با استفاده از ACL در لینوکس
دستور chattr برای ایجاد فایل های مهم و غیر قابل تغییر در لینوکس
دستور lsof برای مشاهده لیست فایل های باز در لینوکس
چگونه بفهمیم در لینوکس چه کسی در حال استفاده از یک فایل است
در این پست ما یک ابزار کامندلاینی ساده را به منظور کمک به کاربران لینوکسی برای دریافت notification به محض تغییرا محتوای فایل ها یا دایرکتوری های خاص در سیستم عامل مورد بحث قرار دادیم. یک فایل pdf به زبان اصلی که مفصل در مورد دستور fswatch توضیحات و آموزش های کافی را داده، را میتوانید از پیوست پست دانلود و مطالعه کنید.
باعث خوشحالیست که تجربیات خودتان را روی این ابزار با ما به اشتراک بگذارید.
fswatch.pdf
همچنین توصیه میشود مطالعه کنید :
مانیتور یا دیتکت فایل ها و دایرکتوری های تازه ایجاد شده با استفاده از inotify-tools
این برنامه چهار نوع مانیتور روی سیستم عامل های متفاوت اجرا میکند مانند :
- مانیتور روی api مربوط به event های فایل سیستم در سیستم عامل Apple OS X
- مانیتور بر اساس kqueue، یک اینترفیس اعلام هشدار ارائه شده در FreeBSD 4.1 و همچنین روی سیستم های خانواده BSD زیادی پشتیبانی میشود. (شامل OS X)
- مانیتور روی API اعلام هشدار event های فایل (File Events Notification API) در کرنل Solaris بعلاوه زیر مجموعه های سولاریس
- مانیتور inotify (منظور inode notify میباشد که یک subsystem کرنل لینوکس است و برای گسترش فایل سیستم ها به منظور توجه روی تغییرات فایل سیستم و گزارش این تغییرات به Application ها مورد استفاده قرار میگیرد این ابزار جایگزین ابزار قدیمی dnotify شده است که در حقیقت هدف مشابهی را به انجام میرساند)، inotify همانطور که گفته شد یک subsystem کرنل است که تغییرات فایل سیستم را به اپلیکیشن ها نشان میدهد.
- مانیتور روی ReadDirectoryChangesW که یک API ویندوزی برای ثبت کردن تغییرات در یک دایرکتوری است.
- مانیتوری که به صورت منظم وضعیت فایل سیستم را بررسی میکند، زمان تغییرات فایل را در مموری نگه داری کرده و به صورت دستی تغییرات فایل سیستم را تشخیص میدهد. (که هر جایی که وضعیت فایل سیستم مورد استفاده قرار گیرد به کار میآید)
قابلیت های ابزار fswatch در linux
- پشتیبانی از چندین API سیستم عامل خاص
- مجاز به مانیتور کردن دایرکتوری ها به صورت recursive
- فیلترینگ مسیر با استفاده از عبارات خاص (regular expressions) شامل including و excluding
- پشتیبانی از فرمت قابل customiz گزارشات مانیتور
- علاوه بر اینها از idle event های متناوب نیز پشتیبانی میکند.
نحوه نصب ابزار fswatch در سیستم های لینوکسی
متاسفانه پکیج نصب fswatch به صورت پیش فرض در ریپازیتوری های سیستمی در هیچ کدام یک از توزیع های لینوکسی در دسترس نیستند. تنها راه نصب آخرین ورژن fswatch نصب از طریق source tarball میباشد که دستور العمل آن به شرح زیر است.
ابتدا آخرین فایل tarball ابزار fswatch را با استفاده از دستور wget دریافت و همانند زیر نصب میکنیم.
کد PHP:
wget https://github.com/emcrisostomo/fswatch/releases/download/1.9.3/fswatch-1.9.3.tar.gz
tar -xvzf fswatch-1.9.3.tar.gz
cd fswatch-1.9.3
./configure
make
sudo make install
نکته : قبل از اینکه ابزار fswatch را از source کامپایل کنید، مطمئن شوید که روی سیستم تان development tools (در حقیقت پکیج build-essential روی سیستم عامل Debian/Ubuntu مد نظر است) و کامپایلر GNU GCC (در واقع compiler های C و C++ مد نظر است) نصب باشد. در صورتی که پیش نیازهای گفته شده در بالا (dependency) نصب نبودند از طریق دستورات زیر و با توجه به توزیع لینوکسی خو آنها را نصب کنید.
کد PHP:
yum groupinstall 'Development Tools [On CentOS/RHEL]
dnf groupinstall 'Development Tools' [On Fedora 22+ Versions]
sudo apt-get install build-essential [On Debian/Ubuntu Versions]
راهنمای رفع خطاها هنگام نصب fswatch :
روی توزیع های Debian/Ubuntu شما ممکن است به هنگام اجرا کردن دستور fswatch خطای زیر را دریافت کنید :
کد PHP:
fswatch: error while loading shared libraries: libfswatch.so.6: cannot open shared object file: No such file or directory
کد PHP:
$ sudo ldconfig
کد PHP:
A compiler with support for C++11 language features is required
کد PHP:
# gcc --version
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-16)
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
نصب ریپازیتوری devo
کد PHP:
wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo
کد PHP:
yum upgrade
کد PHP:
yum install devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c++
کد PHP:
scl enable devtoolset-2 bash
کد PHP:
# gcc --version
gcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-15)
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
چگونه از ابزار fswatch در linux استفاده کنیم؟
ساختار کلی اجرای دستور fswatch به شرح زیر میباشد :
کد PHP:
$ fswatch [option] [path]
کد PHP:
$ fswatch -M
$ fswatch --list-monitors
کد PHP:
[root@mohammad ~]# fswatch -M
inotify_monitor
poll_monitor
[root@mohammad ~]#
[root@mohammad ~]# fswatch --list-monitors
inotify_monitor
poll_monitor
[root@mohammad ~]#
آپشن -l یا --latency به شما این امکان را میدهد که latancy را به ثانیه تعریف کنید که پیش فرض آن 1 ثانیه است.
کد PHP:
$ fswatch -l 4 .
دستور بعد تغییرات فایل /var/log/auth.log را هر 5 ثانیه یکبار مانیتور میکند.
کد PHP:
$ fswatch -l 5 /var/log/auth.log
با استفاده از آپشن -t یا --timestamp زمان مربوط به هر event را نمایش میدهد. برای نمایش زمان به فرمت UTC از آپشن -u یا --utf-time استفاده کنید. شما میتوانید همچنین فرمت time را با استفاده از آپشن -f یا --format-time تغییردهید.
کد PHP:
$ fswatch --timestamp /var/log/auth.log
سپس آپشن -x یا --event-flags به fswatch میگوید که flag های event را همراه با مسیر event ها نمایش بدهد. شما میتوانید از آپشن --event-field-seperator برای نمایش event ها با استفاه از seperator خاص (جدا کننده) استفاده کنید.
کد PHP:
$ fswatch --events-flags ~ /var/log/auth.log
برای نمایش مقدارهای عددی یک event که نمایشگر تغییرات در دایرکتوری home شما و فایل /var/log/auth.log میباشد از آپشن -n یا --numeric همانند زیر استفاده کنید.
کد PHP:
$ fswatch --numeric ~ /var/log/auth.log
به احتمال زیاد با مشاهده صفحه man کامند fswatch آپشن های پراستفاده تر و اطلاعات ریزتری روی این دستور پیدا خواهید کرد.
کد PHP:
$ man fswatch
همچنین توصیه میشود مقالات زیر را مطالعه کنید :
امنیت فایل ها و دایرکتوری ها با استفاده از ACL در لینوکس
دستور chattr برای ایجاد فایل های مهم و غیر قابل تغییر در لینوکس
دستور lsof برای مشاهده لیست فایل های باز در لینوکس
چگونه بفهمیم در لینوکس چه کسی در حال استفاده از یک فایل است
در این پست ما یک ابزار کامندلاینی ساده را به منظور کمک به کاربران لینوکسی برای دریافت notification به محض تغییرا محتوای فایل ها یا دایرکتوری های خاص در سیستم عامل مورد بحث قرار دادیم. یک فایل pdf به زبان اصلی که مفصل در مورد دستور fswatch توضیحات و آموزش های کافی را داده، را میتوانید از پیوست پست دانلود و مطالعه کنید.
باعث خوشحالیست که تجربیات خودتان را روی این ابزار با ما به اشتراک بگذارید.
fswatch.pdf
کامنت