.TH inotifywatch 1 "2025-09-23" "inotifywatch 4.23.9.0" .SH "نام (NAME)" inotifywatch, fsnotifywatch \- جمع‌آوری آمار رویدادهای دسترسی فایل‌ها با استفاده از inotify یا fanotify .SH "خلاصه دستور (SYNOPSIS)" .B inotifywatch .RB [ \-hvzrPqfIFS ] .RB [ \-e <رویداد> ] .RB [ \-t <ثانیه> ] .RB [ \-a <رویداد> ] .RB [ \-d <رویداد> ] <فایل> [ ... ] .B fsnotifywatch .RB [ \-hvzrPqfIFS ] .RB [ \-e <رویداد> ] .RB [ \-t <ثانیه> ] .RB [ \-a <رویداد> ] .RB [ \-d <رویداد> ] <فایل> [ ... ] .SH "توضیحات (DESCRIPTION)" .B inotifywatch به طور پیش‌فرض با استفاده از رابط .BR inotify (7) لینوکس به رویدادهای سیستم فایل گوش می‌دهد، سپس خلاصه‌ای از شمارش رویدادهای دریافت‌شده روی هر فایل یا دایرکتوری را در خروجی چاپ می‌کند. .B fsnotifywatch مشابه .B inotifywatch است اما به طور پیش‌فرض از رابط .BR fanotify (7) لینوکس استفاده می‌کند. در صورت تعیین صریح، از رابط .BR inotify (7) استفاده می‌نماید. .SH "خروجی (OUTPUT)" .B inotifywatch و .B fsnotifywatch جدولی را در خروجی استاندارد چاپ می‌کنند که شامل یک ستون برای هر نوع رویداد و یک سطر برای هر فایل یا دایرکتوری تحت‌نظر است. این جدول تعداد دفعات وقوع هر رویداد را برای هر فایل یا دایرکتوری تحت‌نظر نشان می‌دهد. خروجی را می‌توان با استفاده از گزینه‌های .B \-a یا .B \-d بر اساس یک رویداد خاص مرتب کرد. .PP برخی اطلاعات تشخیصی در خروجی خطای استاندارد چاپ خواهند شد. .SH "گزینه‌ها (OPTIONS)" .TP .B \-h, \-\-help نمایش اطلاعات راهنمای استفاده از دستور. .TP .B \-v, \-\-verbose چاپ اطلاعات اضافی در خروجی خطای استاندارد در حین اجرا. .TP .B @<فایل> هنگام پایش بازگشتی درخت دایرکتوری، فایل مشخص‌شده را از پایش مستثنی می‌کند. فایل باید با مسیر نسبی یا مطلق مشخص شود، بسته به اینکه مسیر نسبی یا مطلق برای دایرکتوری‌های تحت‌نظر داده شده باشد. اگر یک مسیر خاص به طور صریح هم مشمول و هم مستثنی شده باشد، همیشه پایش خواهد شد. .PP .B نکته: اگر نیاز به پایش دایرکتوری یا فایلی دارید که نام آن با @ شروع می‌شود، مسیر مطلق را وارد کنید. .TP .B \-\-fromfile <فایل> خواندن نام فایل‌های تحت‌نظر یا مستثنی‌شده از یک فایل، هر نام فایل در یک سطر. اگر نام فایل‌ها با @ شروع شوند، طبق توضیحات بالا مستثنی می‌شوند. اگر <فایل> برابر با `\-` باشد، نام فایل‌ها از ورودی استاندارد خوانده می‌شوند. از این گزینه در صورتی استفاده کنید که تعداد فایل‌های مورد نیاز برای پایش بیش از آن باشد که بتوان به عنوان آرگومان خط فرمان ارسال کرد. .TP .B \-z, \-\-zero چاپ سطرها و ستون‌های جدول حتی اگر تمام مقادیر صفر باشند. به طور پیش‌فرض، سطرها و ستون‌ها فقط در صورتی چاپ می‌شوند که شامل عناصر غیرصفر باشند. استفاده از این گزینه هنگام پایش همه رویدادها روی تعداد زیادی فایل می‌تواند منجر به حجم .I بسیار زیادی از خروجی شود! .TP .B \-\-exclude <الگو> هیچ رویدادی را برای زیرمجموعه‌ای از فایل‌ها که نام آن‌ها با عبارت باقاعده POSIX مشخص‌شده مطابقت دارد پردازش نمی‌کند (حساس به حروف کوچک و بزرگ). .TP .B \-\-excludei <الگو> هیچ رویدادی را برای زیرمجموعه‌ای از فایل‌ها که نام آن‌ها با عبارت باقاعده POSIX مشخص‌شده مطابقت دارد پردازش نمی‌کند (غیرحساس به حروف کوچک و بزرگ). .TP .B \-\-include <الگو> رویدادها را فقط برای زیرمجموعه‌ای از فایل‌ها پردازش می‌کند که نام آن‌ها با عبارت باقاعده POSIX مشخص‌شده مطابقت دارد (حساس به حروف کوچک و بزرگ). .TP .B \-\-includei <الگو> رویدادها را فقط برای زیرمجموعه‌ای از فایل‌ها پردازش می‌کند که نام آن‌ها با عبارت باقاعده POSIX مشخص‌شده مطابقت دارد (غیرحساس به حروف کوچک و بزرگ). .TP .B \-r, \-\-recursive تمام زیردایرکتوری‌های هر دایرکتوری ارائه‌شده به عنوان آرگومان را پایش می‌کند. پایش‌ها به صورت بازگشتی تا عمق نامحدود برقرار می‌شوند. پیوندهای نمادین پیمایش نمی‌شوند. اگر دایرکتوری‌های جدیدی درون دایرکتوری‌های تحت‌نظر ایجاد شوند، به طور خودکار پایش خواهند شد. .PP .B هشدار: اگر از این گزینه هنگام پایش دایرکتوری ریشه یک درخت بزرگ استفاده کنید، ممکن است ایجاد تمام پایش‌های inotify زمان قابل‌توجهی طول بکشد و در این مدت رویدادی دریافت نخواهد شد. همچنین، از آنجا که برای هر زیردایرکتوری یک پایش inotify ایجاد می‌شود، ممکن است به حداکثر تعداد پایش‌های inotify مجاز برای هر کاربر برسید. مقدار پیش‌فرض حداکثر ۸۱۹۲ است؛ این مقدار را می‌توان با نوشتن در .BR /proc/sys/fs/inotify/max_user_watches افزایش داد. .TP .B \-P, \-\-no\-dereference پیوندهای نمادین را دنبال نمی‌کند. .TP .B \-t <ثانیه>, \-\-timeout <ثانیه> فقط به مدت تعداد ثانیه‌های مشخص‌شده گوش می‌دهد. در صورت عدم تعیین، inotifywatch تا زمان دریافت سیگنال وقفه (برای مثال با فشردن کلیدهای CONTROL-C در کنسول) به جمع‌آوری آمار ادامه می‌دهد. .TP .B \-e <رویداد>, \-\-event <رویداد> فقط به رویداد(های) خاص گوش می‌دهد. رویدادهایی که می‌توان به آن‌ها گوش داد در بخش .B "رویدادها (EVENTS)" فهرست شده‌اند. این گزینه را می‌توان بیش از یک بار مشخص کرد. در صورت حذف، به تمام رویدادها گوش داده می‌شود. .TP .B \-a <رویداد>, \-\-ascending <رویداد> مرتب‌سازی صعودی خروجی بر اساس تعداد رویداد مشخص‌شده. رویدادهای قابل مرتب‌سازی شامل `total` و تمامی رویدادهای فهرست‌شده در بخش .B "رویدادها (EVENTS)" به جز `move` و `close` هستند (به جای آن‌ها باید از `moved_to`، `moved_from`، `close_write` یا `close_nowrite` استفاده کنید). حالت پیش‌فرض، مرتب‌سازی نزولی بر اساس `total` است. .TP .B \-d <رویداد>, \-\-descending <رویداد> مرتب‌سازی نزولی خروجی بر اساس تعداد رویداد مشخص‌شده. رویدادهای قابل مرتب‌سازی شامل `total` و تمامی رویدادهای فهرست‌شده در بخش .B "رویدادها (EVENTS)" به جز `move` و `close` هستند (به جای آن‌ها باید از `moved_to`، `moved_from`، `close_write` یا `close_nowrite` استفاده کنید). حالت پیش‌فرض، مرتب‌سازی نزولی بر اساس `total` است. .TP .B \-I, \-\-inotify پایش با استفاده از inotify (پیش‌فرض برای \fBinotifywatch\fP). .TP .B \-F, \-\-fanotify پایش با استفاده از fanotify (پیش‌فرض برای \fBfsnotifywatch\fP). پشتیبانی fanotify برای گزارش رویدادها با اطلاعات سازگار با inotify در هسته نسخه ۵.۹ اضافه شد. با هسته‌های قدیمی‌تر این دستور با خطا مواجه خواهد شد. از هسته نسخه ۵.۱۲ به بعد، fanotify نیازمند دسترسی‌های مدیریتی است. .TP .B \-S, \-\-filesystem پایش کل سیستم فایل هر دایرکتوری ارائه‌شده به عنوان آرگومان با استفاده از fanotify. .SH "وضعیت خروج (EXIT STATUS)" .TP .B 0 برنامه با موفقیت اجرا شد. .TP .B 1 خطایی در اجرای برنامه رخ داد. .SH "رویدادها (EVENTS)" رویدادهای زیر برای استفاده با گزینه .B \-e معتبر هستند: .TP .B access فایلی تحت‌نظر یا فایلی درون دایرکتوری تحت‌نظر خوانده شد. .TP .B modify فایلی تحت‌نظر یا فایلی درون دایرکتوری تحت‌نظر نوشته شد. .TP .B attrib متادیتای فایلی تحت‌نظر یا فایلی درون دایرکتوری تحت‌نظر تغییر یافت. این شامل برچسب‌های زمانی، دسترسی‌های فایل، ویژگی‌های گسترش‌یافته و غیره است. .TP .B close_write فایلی تحت‌نظر یا فایلی درون دایرکتوری تحت‌نظر، پس از باز شدن در حالت قابل نوشتن، بسته شد. این لزوماً به این معنی نیست که در فایل نوشته شده است. .TP .B close_nowrite فایلی تحت‌نظر یا فایلی درون دایرکتوری تحت‌نظر، پس از باز شدن در حالت فقط‌خواندنی، بسته شد. .TP .B close فایلی تحت‌نظر یا فایلی درون دایرکتوری تحت‌نظر، صرف‌نظر از نحوه باز شدن آن، بسته شد. توجه داشته باشید که این در واقع صرفاً با گوش دادن به هر دو رویداد .B close_write و .B close_nowrite پیاده‌سازی شده است، بنابراین تمام رویدادهای بستن دریافتی به عنوان یکی از این دو در خروجی چاپ می‌شوند، نه .BR CLOSE . .TP .B open فایلی تحت‌نظر یا فایلی درون دایرکتوری تحت‌نظر باز شد. .TP .B moved_to یک فایل یا دایرکتوری به درون دایرکتوری تحت‌نظر منتقل شد. این رویداد حتی در صورتی که فایل از همان دایرکتوری و به همان دایرکتوری جابه‌جا شود رخ می‌دهد. .TP .B moved_from یک فایل یا دایرکتوری از دایرکتوری تحت‌نظر منتقل شد. این رویداد حتی در صورتی که فایل از همان دایرکتوری و به همان دایرکتوری جابه‌جا شود رخ می‌دهد. .TP .B move یک فایل یا دایرکتوری از یا به یک دایرکتوری تحت‌نظر منتقل شد. توجه داشته باشید که این در واقع صرفاً با گوش دادن به هر دو رویداد .B moved_to و .B moved_from پیاده‌سازی شده است، بنابراین تمام رویدادهای انتقال دریافتی به عنوان یکی از این دو یا هر دوی آن‌ها در خروجی چاپ می‌شوند، نه .BR MOVE . .TP .B move_self یک فایل یا دایرکتوری تحت‌نظر جابه‌جا شد. پس از این رویداد، فایل یا دایرکتوری دیگر تحت پایش نخواهد بود. .TP .B create یک فایل یا دایرکتوری درون یک دایرکتوری تحت‌نظر ایجاد شد. .TP .B delete یک فایل یا دایرکتوری درون یک دایرکتوری تحت‌نظر حذف شد. .TP .B delete_self یک فایل یا دایرکتوری تحت‌نظر حذف شد. پس از این رویداد، فایل یا دایرکتوری دیگر تحت پایش نخواهد بود. توجه داشته باشید که این رویداد می‌تواند حتی در صورت عدم گوش دادن صریح به آن رخ دهد. .TP .B unmount سیستم فایلی که فایل یا دایرکتوری تحت‌نظر روی آن قرار دارد، از حالت سوار (Unmount) خارج شد. پس از این رویداد، فایل یا دایرکتوری دیگر تحت پایش نخواهد بود. توجه داشته باشید که این رویداد می‌تواند حتی در صورت عدم گوش دادن صریح به آن رخ دهد. .SH "مثال (EXAMPLE)" پایش دایرکتوری `~/.beagle' به مدت ۶۰ ثانیه: .nf % inotifywatch -v -e access -e modify -t 60 -r ~/.beagle Establishing watches... Setting up watch(es) on /home/rohan/.beagle OK, /home/rohan/.beagle is now being watched. Total of 302 watches. Finished establishing watches, now collecting statistics. Will listen for events for 60 seconds. total access modify filename 1436 1074 362 /home/rohan/.beagle/Indexes/FileSystemIndex/PrimaryIndex/ 1323 1053 270 /home/rohan/.beagle/Indexes/FileSystemIndex/SecondaryIndex/ 303 116 187 /home/rohan/.beagle/Indexes/KMailIndex/PrimaryIndex/ 261 74 187 /home/rohan/.beagle/TextCache/ 206 0 206 /home/rohan/.beagle/Log/ 42 0 42 /home/rohan/.beagle/Indexes/FileSystemIndex/Locks/ 18 6 12 /home/rohan/.beagle/Indexes/FileSystemIndex/ 12 0 12 /home/rohan/.beagle/Indexes/KMailIndex/Locks/ 3 0 3 /home/rohan/.beagle/TextCache/54/ 3 0 3 /home/rohan/.beagle/TextCache/bc/ 3 0 3 /home/rohan/.beagle/TextCache/20/ 3 0 3 /home/rohan/.beagle/TextCache/62/ 2 2 0 /home/rohan/.beagle/Indexes/KMailIndex/SecondaryIndex/ .fi .SH "هشدارها (CAVEATS)" هنگام استفاده از inotifywatch، تضمینی وجود ندارد که نام فایل چاپ‌شده در خروجی پس از یک جابه‌جایی به‌روز باشد، زیرا این inode است که پایش می‌شود. علاوه بر این، در مواردی که فایل با چندین نام در سیستم فایل شناخته می‌شود، تضمینی نیست که هیچ‌یک از عملیات‌های مشاهده‌شده روی همان نام فایلی انجام شده باشند که به inotifywatch دستور پایش آن داده شده بود. .SH "اشکالات (BUGS)" شرایط رقابتی در کد پایش بازگشتی دایرکتوری وجود دارد که در صورت وقوع رویدادها در یک دایرکتوری بلافاصله پس از ایجاد آن دایرکتوری، می‌تواند منجر به از دست رفتن رویدادها شود. این مشکل احتمالاً غیرقابل رفع است. .PP فرض بر این است که صف رویدادهای inotify هرگز سرریز نخواهد کرد. .SH "نویسندگان (AUTHORS)" .B inotifywatch توسط Rohan McGovern آغاز شد و در حال حاضر توسط Eric Curtin و Radu Voicilas نگهداری می‌شود. نشانی فهرست کامل‌تری از مشارکت‌کنندگان را ارائه می‌دهد. .PP .B inotifywatch بخشی از inotify-tools است. وب‌سایت inotify-tools در نشانی زیر قرار دارد: .I https://github.com/inotify-tools/inotify-tools/wiki .SH "همچنین ببینید (SEE ALSO)" .BR inotifywait (1), .BR inotify (7)