WATCH(1) General Commands Manual WATCH(1)

watch - اجرای دوره‌ای یک برنامه و نمایش خروجی تمام‌صفحه

watch [option ...] command

watch دستور command را به‌صورت مکرر اجرا کرده و خروجی و خطاهای آن را نمایش می‌دهد (اولین صفحه کامل). این امکان به شما اجازه می‌دهد تا تغییرات خروجی برنامه را در طول زمان مشاهده کنید. به‌طور پیش‌فرض، command هر ۲ ثانیه اجرا می‌شود و watch تا زمان متوقف شدن به کار ادامه می‌دهد. یک سربرگ، زمان آغاز و مدت زمان اجرای command و همچنین کد خروج آن را نمایش می‌دهد.

در صورتی که خروج command با کدی غیر از صفر (ناموفق) باشد، بوق هشدار (beep) می‌زند.
تفسیر کدهای رنگ و سبک‌دهی ANSI.
کدهای رنگ و سبک‌دهی ANSI را تفسیر نمی‌کند.
برجسته‌سازی تفاوت‌های میان به‌روزرسانی‌های متوالی. اگر آرگومان اختیاری permanent مشخص شده باشد، آن‌گاه watch تمام تغییرات ایجادشده از نخستین تکرار را نمایش می‌دهد. آرگومان permanent باید بدون فاصله به گزینه متصل شود، مانند -d1 یا --differences=1.
متوقف کردن (انجماد) به‌روزرسانی‌ها هنگام بروز خطا در command و خروج پس از فشردن یک کلید. کد خروج watch همان کدی خواهد بود که command با آن پایان یافته است. اگر سیگنال n علت پایان یافتن command باشد، کد خروج 128 + n خواهد بود.
به جای پاک کردن صفحه در هر به‌روزرسانی، watch خروجی را مشابه نحوه کارکرد tail -f به پایین پیمایش (scroll) می‌کند. این گزینه با گزینه‌هایی که خروجی صفحه را ردیابی می‌کنند، مانند --differences، --chgexit و --eqexit سازگار نیست.
هنگامی که خروجی قابل مشاهده command تغییر کند، خارج می‌شود. تغییراتی که به دلیل کوچک بودن صفحه یا حجم بالای خروجی خارج از دید هستند، باعث خروج watch نخواهند شد.
مشخص کردن فاصله زمانی به‌روزرسانی. مقادیر کوچک‌تر از 0.1 و بزرگ‌تر از 2678400 (۳۱ روز) به این کران‌ها تبدیل می‌شوند. هر دو نویسه '.' و ',' برای هر محلی‌سازی (locale) کار می‌کنند. متغیر محیطی WATCH_INTERVAL می‌تواند برای تعیین پایدار یک فاصله زمانی غیرپیش‌فرض (با رعایت همان قوانین و قالب‌بندی) به کار رود.
اجرای command با فاصله --interval ثانیه پس از شروع اجرای پیشین آن، به جای --interval ثانیه پس از پایان اجرای قبلی. در صورتی که کامل شدن اجرای command بیش از --interval ثانیه طول بکشد، در هر دو حالت تا پایان آن انتظار کشیده می‌شود.
-q, --equexit <cycles>
هنگامی که خروجی command به تعداد دوره‌های مشخص‌شده بدون تغییر بماند، خارج می‌شود.
هنگام تغییر اندازه پایانه، برنامه دوباره اجرا نمی‌شود؛ خروجی برنامه در زمان اجرای عادی بعدی مجدداً نمایان خواهد شد.
-s, --shotsdir
دایرکتوری مقصد جهت ذخیره نماگرفت‌ها (screenshots).
خاموش کردن سربرگی که به‌طور معمول در بالای صفحه نمایش داده می‌شود.
غیرفعال کردن شکست خودکار خطوط (line wrapping). خطوط طولانی به جای رفتن به خط بعد کوتاه (بریده) می‌شوند.
ارسال command به یک فراخوانی exec(3) به جای sh -c. برنامه اندکی سریع‌تر آغاز خواهد شد. قابلیت‌های پوسته (آماده‌سازی محیط، گسترش متغیرها و مسیرها و غیره) در دسترس نخواهند بود.
نمایش متن راهنما و خروج.
نمایش اطلاعات نسخه و خروج.

اجرای بی‌درنگ command. اگر در آن لحظه در حال اجرا باشد، متوقف نشده و دور بعدی آن بدون تاخیر آغاز خواهد شد.
خروج از watch. در حال حاضر دستور در حال اجرا را متوقف نمی‌کند (برخلاف سیگنال‌های خاتمه‌دهنده مانند SIGKILL پس از فشردن Ctrl+C).
گرفتن نماگرفت. در پوشه کاری ذخیره خواهد شد، مگر آنکه توسط --shotsdir به گونه دیگری مشخص شده باشد. اگر command در حال اجرا باشد، نماگرفت به محض پایان آن گرفته خواهد شد.

0
موفقیت. بیانگر کد خروج command نیست.
1
خطاهای نامرتبط با عملکرد command.
2
خطاهای مرتبط با اجرا و مدیریت command (نه کد خروج آن).
هر مقدار غیرصفر (--errexit)
با گزینه --errexit آخرین کد خروج command بازگردانده می‌شود.

رفتار watch تحت تأثیر متغیرهای محیطی زیر قرار می‌گیرد:

فاصله زمانی به‌روزرسانی؛ از همان قوانین گزینه خط فرمان --interval پیروی می‌کند.
عرض صفحه پایانه بر حسب نویسه. برای بازنویسی (override) تشخیص خودکار تنظیم می‌شود.
ارتفاع صفحه پایانه بر حسب نویسه. برای بازنویسی (override) تشخیص خودکار تنظیم می‌شود.

پردازش گزینه‌ها مطابق استاندارد POSIX انجام می‌شود (یعنی پردازش گزینه‌ها در نخستین آرگومان غیرگزینه‌ای متوقف می‌گردد). این بدان معناست که پرچم‌های پس از command توسط خود watch تفسیر نمی‌شوند.

نویسه‌های غیرقابل‌چاپ از خروجی برنامه حذف می‌شوند. در صورت تمایل به مشاهده آن‌ها، از cat -v به عنوان بخشی از خط لوله (pipeline) دستور استفاده کنید.

برای مشاهده تغییرات محتوای یک پوشه، می‌توانید از دستور زیر استفاده کنید:

watch -d ls -l

اگر پردازنده‌هایی با بسامد پویا دارید و می‌خواهید تغییرات آن را مشاهده کنید، دستور زیر را امتحان کنید. دستور به پوسته فرستاده می‌شود که امکان ایجاد خط لوله را به شما می‌دهد. نقل‌قول‌ها نیز از قابلیت‌های پوسته هستند.

watch -n1 'grep "^cpu MHz" /proc/cpuinfo | sort -nrk4'

جهت نظارت بر وضعیت در دسترس بودن سرورها و ذخیره یک رونوشت از خروجی هر اجرا در یک فایل، می‌توانید از این دستور استفاده کنید. گزینه -p باعث می‌شود دستور صرف‌نظر از مدت زمان اجرای قبلی، هر ۱۰ ثانیه یک‌بار اجرا شود.

watch -n10 -p -d '{ date; for i in 10.0.0.31 10.0.0.32 10.0.0.33; do R=OK; ping -c2 -W2 "$i" &>/dev/null || R=FAIL; echo "$i: $R"; done } | tee -a ~/log'

می‌توانید جهت بررسی نصب آخرین هسته توسط مدیر سیستم از دستور زیر استفاده کنید:

watch uname -r

هنگامی که ابعاد پایانه تغییر می‌کند، تغییرات محتوای آن در اجرای بعدی command ثبت نمی‌شود. در آن نوبت --chgexit فعال نخواهد شد و شمارنده --equexit حتی در صورت تغییر خروجی command در این فاصله، از نو آغاز نخواهد شد. همچنین برجسته‌سازی --differences بازنشانی می‌گردد.

لطفاً گزارش‌های اشکال را به procps@freelists.org ارسال کنید.

2025-04-16 procps-ng