GIT-FSMONITOR--DAEMON(1) Git Manual GIT-FSMONITOR--DAEMON(1)

git-fsmonitor--daemon - پایشگر توکار سیستم‌فایل

git fsmonitor--daemon start
git fsmonitor--daemon run
git fsmonitor--daemon stop
git fsmonitor--daemon status

یک دیمن برای پایش تغییرات فایل‌ها و دایرکتوری‌ها در دایرکتوری کاری با استفاده از امکانات اعلان سیستم‌فایل وابسته به پلتفرم.

این دیمن مستقیماً با دستوراتی مانند git status با استفاده از رابط simple IPC[1] به جای رابط کندتر githooks(5) ارتباط برقرار می‌کند.

این دیمن در داخل گیت تعبیه شده است تا نیازی به ابزارهای شخص ثالث نباشد.

start

یک دیمن را در پس‌زمینه راه‌اندازی می‌کند.

run

یک دیمن را در پیش‌زمینه اجرا می‌کند.

stop

در صورت وجود، دیمن در حال اجرا در دایرکتوری کاری فعلی را متوقف می‌کند.

status

اگر دیمنی در حال پایش دایرکتوری کاری فعلی باشد، با وضعیت صفر خارج می‌شود.

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

هنگامی که core.fsmonitor روی true تنظیم شود (به git-config(1) مراجعه کنید)، دستوراتی مانند git status تغییرات را از دیمن جویا شده و در صورت لزوم آن را به‌طور خودکار راه‌اندازی می‌کنند.

برای اطلاعات بیشتر، بخش «File System Monitor» را در git-update-index(1) ببینید.

دیمن fsmonitor در حال حاضر اطلاعی از زیرماژول‌ها (submodules) ندارد و رویدادهای سیستم‌فایل را که درون یک زیرماژول رخ می‌دهند فیلتر نمی‌کند. اگر دیمن fsmonitor در حال پایش یک مخزن والد باشد و فایلی در دایرکتوری کاری یک زیرماژول تغییر کند، آن تغییر را (به عنوان تغییری در مخزن والد) گزارش می‌دهد. با این حال، کلاینت این رویدادهای اضافی را به‌درستی نادیده می‌گیرد، بنابراین عملکرد ممکن است تحت تأثیر قرار گیرد اما نتیجه نادرستی ایجاد نخواهد شد.

به‌طور پیش‌فرض، دیمن fsmonitor از کار با مخازن متصل به شبکه خودداری می‌کند؛ این رفتار را می‌توان با تنظیم fsmonitor.allowRemote به true نادیده گرفت. با این حال توجه داشته باشید که تضمینی برای کارکرد صحیح دیمن fsmonitor با همه مخازن متصل به شبکه وجود ندارد، بنابراین چنین استفاده‌ای آزمایشی در نظر گرفته می‌شود.

در Mac OS و لینوکس، ارتباط بین‌پردازه‌ای (IPC) میان دستورات مختلف گیت و دیمن fsmonitor از طریق سوکت دامنه یونیکس (UDS) — نوع خاصی از فایل — انجام می‌شود که توسط سیستم‌فایل‌های بومی Mac OS و لینوکس پشتیبانی می‌شود، اما در سیستم‌فایل‌های متصل به شبکه، NTFS یا FAT32 پشتیبانی نمی‌شود. سیستم‌فایل‌های دیگر ممکن است پشتیبانی لازم را داشته باشند یا نداشته باشند؛ عملکرد دیمن fsmonitor با این سیستم‌فایل‌ها تضمین نمی‌شود و چنین استفاده‌ای آزمایشی تلقی می‌گردد.

به‌طور پیش‌فرض، سوکت در پوشه .git ایجاد می‌شود. با این حال، اگر پوشه .git روی یک سیستم‌فایل متصل به شبکه باشد، به جای آن در $HOME/.git-fsmonitor-* ایجاد می‌شود، مگر اینکه خود $HOME روی یک سیستم‌فایل متصل به شبکه باشد که در این صورت باید متغیر پیکربندی fsmonitor.socketDir را روی مسیر پوشه‌ای در یک سیستم‌فایل بومی برای ایجاد فایل سوکت تنظیم کنید.

اگر هیچ‌کدام از پوشه‌های بالا (.git، $HOME یا fsmonitor.socketDir) روی یک سیستم‌فایل بومی نباشند، دیمن fsmonitor خطایی گزارش می‌دهد که باعث خروج دیمن و دستور در حال اجرای فعلی می‌شود.

در لینوکس، دیمن fsmonitor از inotify برای پایش رویدادهای سیستم‌فایل استفاده می‌کند. سیستم inotify محدودیت‌هایی به ازای هر کاربر برای تعداد پایش‌هایی که می‌توان ایجاد کرد دارد. حد پیش‌فرض معمولاً ۸۱۹۲ پایش به ازای هر کاربر است.

برای مخازن بزرگ با پوشه‌های بسیار، ممکن است نیاز به افزایش این حد داشته باشید. حد فعلی را با دستور زیر بررسی کنید:

cat /proc/sys/fs/inotify/max_user_watches

برای افزایش موقت حد:

sudo sysctl fs.inotify.max_user_watches=65536

برای دائمی کردن تغییر، عبارت زیر را به /etc/sysctl.conf اضافه کنید:

fs.inotify.max_user_watches=65536

تمام موارد زیر در این بخش به‌صورت گزینشی از مستندات git-config(1) درج شده‌اند. محتوا همان چیزی است که در آنجا یافت می‌شود:

fsmonitor.allowRemote

به‌طور پیش‌فرض، دیمن fsmonitor از کار با مخازن متصل به شبکه خودداری می‌کند. تنظیم fsmonitor.allowRemote روی true این رفتار را نادیده می‌گیرد. تنها در صورتی لحاظ می‌شود که core.fsmonitor روی true تنظیم شده باشد.

fsmonitor.socketDir

این گزینه ویژه Mac OS و لینوکس، در صورت تنظیم، پوشه‌ای را مشخص می‌کند که در آن سوکت دامنه یونیکس مورد استفاده برای ارتباط بین دیمن fsmonitor و دستورات مختلف گیت ایجاد شود. پوشه باید روی یک سیستم‌فایل بومی قرار داشته باشد. تنها زمانی اعمال می‌شود که core.fsmonitor روی true تنظیم شده باشد.

بخشی از مجموعه git(1)

1.
simple IPC
file:///usr/share/doc/git-doc/technical/api-simple-ipc.html
2026-06-29 Git 2.55.0