اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

ابزار fswatch - مانیتور کردن تغییرات فایل ها و دایرکتوری ها در linux

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    ابزار fswatch - مانیتور کردن تغییرات فایل ها و دایرکتوری ها در linux

    fswatch یکی از ابزارهای چند platforme برای مانیتور تغییرات فایل در لینوکس میباشد که به محض تغییر محتوا در فایل ها یا دایرکتوری های خاص notification یا آلارم دریافت میکند.

    دستور fswatch در لینوکس




    همچنین توصیه میشود مطالعه کنید :

    مانیتور یا دیتکت فایل ها و دایرکتوری های تازه ایجاد شده با استفاده از 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:
    fswatcherror while loading shared librarieslibfswatch.so.6cannot open shared object fileNo such file or directory 
    برای رفع آن شما نیاز دارید که دستور زیر را اجرا کنید. این دستور به بازخوانی (refresh) لینک ها و cashe کردن آنها به کتابخانه های داینامیک (Dynamic Library) کمک میکند (قبل از اینکه شما شروع به استفاده از fswatch کنید)
    کد PHP:
    sudo ldconfig 
    روی توزیع های RHEL/CentOS هم شما ممکن است هنگام نصب fswatch با خطای زیر روبه رو شوید :
    کد PHP:
    A compiler with support for C++11 language features is required 
    برای رفع آن نیاز هست که دستورات زیر را اجرا کنید. ابتدا ورژن c++ نصب شده خود را بررسی کنید.
    کد PHP:
    # gcc --version
    gcc (GCC4.4.7 20120313 (Red Hat 4.4.7-16)
    Copyright (C2010 Free Software FoundationInc.
    This is free softwaresee the source for copying conditionsThere is NO
    warranty
    not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE
    اگر ورژن شما gcc شما 4.4 باشد شما c++11 را ندارید در نتیجه شما باید gcc خودتان رابه روژن 4.8 یا بالاتر upgrade کنید. به هر حال اگر شما نمیخواهید که gcc پیشفرض را اپدیت کنید (زیرا ممکن است باعث اختلال در هر چیز دیگری شود) پس development libraries را نصب میکنیم و از کنترل برنامه برای switch در این shell استفاده میکنیم.

    نصب ریپازیتوری devo
    کد PHP:
    wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo 
    سپس سیستم خود را upgrade کنید :
    کد PHP:
    yum upgrade 
    سپس c++11 را نصب کنید :
    کد PHP:
    yum install devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c++ 
    و نهایتا از software collection برای فعال کردن آن در shell جاری استفاده میکنیم.
    کد PHP:
    scl enable devtoolset-2 bash 
    مجددا ورژن c++ خود را بررسی کنید :
    کد PHP:
    # gcc --version
    gcc (GCC4.8.2 20140120 (Red Hat 4.8.2-15)
    Copyright (C2013 Free Software FoundationInc.
    This is free softwaresee the source for copying conditionsThere is NO
    warranty
    not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE
    نهایتا بعد از رفع مشکل ادامه نصب fswatch میپردازیم.



    چگونه از ابزار fswatch در linux استفاده کنیم؟

    ساختار کلی اجرای دستور fswatch به شرح زیر میباشد :
    کد PHP:
    fswatch [option] [path
    روی linux توصیه میشود که از مانیتور inotify پیش فرض استفاده کنید، شما میتوانید موارد در دسترس برای مانیتور کردن را با استفاده از آپشن -M یا --list-monitors را لیست و مشاهده کنید.
    کد 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 ~]
    دستور زیر به شما این امکان را میدهد که تغییرات در دایرکتوری جاری (/root) را به همراه event های ارسال شده به standard output (هر 4 ثانیه یکبار) مشاهده کنید.

    آپشن -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 
    برای اطلاعات بیشتر به ریپازیتوری github دستور fswatch مراجعه کنید.
    A cross-platform file change monitor with multiple backends: Apple OS X File System Events, *BSD kqueue, Solaris/Illumos File Events Notification, Linux inotify, Microsoft Windows and a stat()-base...



    همچنین توصیه میشود مقالات زیر را مطالعه کنید :

    امنیت فایل ها و دایرکتوری ها با استفاده از ACL در لینوکس

    دستور chattr برای ایجاد فایل های مهم و غیر قابل تغییر در لینوکس

    دستور lsof برای مشاهده لیست فایل های باز در لینوکس

    چگونه بفهمیم در لینوکس چه کسی در حال استفاده از یک فایل است


    در این پست ما یک ابزار کامندلاینی ساده را به منظور کمک به کاربران لینوکسی برای دریافت notification به محض تغییرا محتوای فایل ها یا دایرکتوری های خاص در سیستم عامل مورد بحث قرار دادیم. یک فایل pdf به زبان اصلی که مفصل در مورد دستور fswatch توضیحات و آموزش های کافی را داده، را میتوانید از پیوست پست دانلود و مطالعه کنید.

    باعث خوشحالیست که تجربیات خودتان را روی این ابزار با ما به اشتراک بگذارید.

    fswatch.pdf
    فایل های پیوست شده
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 09-22-2021, 11:14 AM.
    Instagram : https://www.instagram.com/iranlinuxforum

    Voip Trainer - Asterisk - Elastix - Agi Programming- NewRock

    Voip Expert :ASTERISK-ELASTIX-NewRock Certified-With Experience of Working With
    Sangoma-Digium-Openvox-Synway-Atcom-Quintum Tenor-Polycom-Yealink-Rtx-Snom
    Cisco Collaboration - CME-CUCM-CUPs-CUC-WEBEX
    LPI ( Fundamental - LPI1 and LPI2 ) - Monitoring: ZABBIX-VOIPMONITOR-NAGIOS - CCNA

    Linkedin Profile : https://www.linkedin.com/in/masuma-vahid-26b17b66/

    #2
    سلام.
    داخل ریپو اوبونتو من چک کردم بود.
    ممنون

    کامنت

    درباره انجمن منطقه لینوکسی ها

    انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

    شبکه های اجتماعی
    در حال انجام ...
    X