دستور watch  برای اجرای هر دستور دلخواه در فواصل منظم و نمایش خروجی آن دستور در پنجره ترمینال استفاده می‌شود؛ دستور watch برای زمانی کاربردی است که شما مجبور هستید، یک دستور را به‌طور مکرر اجرا کرده و تغییر خروجی آن دستور را با گذشت زمان مشاهده نمایید. به‌عنوان‌مثال، می‌توانید از دستور watch برای نظارت بر به‌روزرسانی سیستم یا برای اطلاع از میزان استفاده از رم استفاده کنید.
ابزار watch بخشی از بسته نرم‌افزاری procps (procps-ng) است؛ که تقریباً در همه توزیع‌های لینوکس تعریف شده است.

 

نحوه استفاده از دستور Watch

ساختار دستور watch به‌صورت زیر است:

watch [OPTIONS] COMMAND

برای بهتر نشان دادن نحوه عملکرد دستور watch، دستور date را به‌صورت زیر اجرا می‌کنیم:

watch date


با اجرای این خط، دستورwatch  ابتدا به‌طور موقت تمام محتوای ترمینال را پاک کرده و سپس شروع به اجرای دستور date در فواصل منظم می‌کند. زمانی که در دستور watch از هیچ گزینه‌ای استفاده نکنیم، دستور مشخص شده (در این مثال دستور date) هر دو ثانیه یک‌بار اجرا می‌شود.
فاصله زمانی اجرا و نوع دستور اجرا شده، در بالا و سمت چپ هدر پنجره خط فرمان قابل مشاهده است، که برای این مثال عبارت Every 2.0s:date نمایش داده می‌شود. علاوه بر این در بالا و سمت چپ هدر پنجره خط فرمان ، ساعت و تاریخ فعلی نشان داده می‌شود. اگر بخواهید این اطلاعات در هدر نمایش داده نشود، باید از گزینه  -t (--no-title)در دستور watch استفاده کنید؛ به عنوان مثال:

watch date -t


خروجی دستور مشخص شده روی صفحه‌نمایش نشان داده می‌شود که مرتباً هر دو ثانیه یک‌بار به‌روز می‌شود؛ برای خارج شدن از دستور watch، کافی است کلیدهای Ctrl+C را بزنید. علاوه بر این می‌توانید با استفاده از گزینه-g (--chgexit) تعیین کنید که در صورت تغییر مقادیر خروجی فرمان، اجرای دستور watch خاتمه یابد؛ به عنوان مثال:

watch date -g


نحوه تغییر فاصله زمانی

اگر فاصله زمانی پیش‌فرض دو ثانیه، برای تکرار اجرای دستور مورد نظرتان مناسب نباشد، چه باید کرد؟ گزینه -n (-- interval) که به دنبال آن تعداد ثانیه‌های مورد نظر مشخص می‌شود، به شما امکان می‌دهد فاصله زمانی بین به‌روزرسانی‌ها را تغییر دهید:

watch -n INTERVAL_IN_SECONDS COMMAND

به‌عنوان‌مثال، برای نظارت بر میزان استفاده از فضای دیسک خود با استفاده از دستور df و اجرای عملیات refresh بر روی صفحه در هر پنج ثانیه یک‌بار، دستور زیر را اجرا نمایید:

watch -n 5 df -h

 

به عنوان مثالی دیگر، شما می‌توانید دستگاه‌های USB متصل شده به سیستم خود را با دستور زیر نظارت کنید:

watch -n 0.1 lsusb

دستور "lsusb" لیست دستگاه‌های USB متصل شده به سیستم را نشان می‌دهد. با استفاده از گزینه "-n 0.1" به دستور "watch" گفتیم هر 0.1 ثانیه، این خروجی را به روز رسانی کند؛ خروجی این دستور به صورت زیر می‌باشد:

تعیین تفاوت بین به‌روزرسانی‌ها

گزینه –d (--difference) باعث می‌شود که دستور watch بتواند تغییرات بین به‌روزرسانی‌های پی‌درپی را با تغییر رنگ عبارت تغییریافته مشخص کند:

watch -d COMMAND

اگر بخواهید با اجرای دستور uptime به‌روزرسانی سیستم را نظارت کرده و تغییرات را برجسته نمایید. می‌توانید از دستور زیر استفاده نمایید:

watch -d uptime

خروجی این دستور به صورت زیر می‌باشد:

اگر می‌خواهید این هایلایت ها دائمی باشند، عبارت =cumulative را بلافاصله پس از گزینه -d تایپ کنید. این بدان معنی است که تمام مقادیری که تاکنون تغییر یافته است، به‌صورت هایلایت می‌ماند.

watch -d=cumulative COMMAND


اجرای دستورات به‌صورت موازی

اگر بخواهید یک فرمانی را اجرا کنید که شامل چندین دستور موازی است، باید دستورها را با علامت | از همدیگر جدا کرده و کل فرمان را درون ' یا " قرار دهید. در غیر این صورت تنها اولین دستور اجرا می‌شود و سپس خروجی آن به‌عنوان ورودی به دستور بعدی وارد می‌گردد.

watch 'COMMAND_1 | COMMAND_2'

به‌عنوان‌مثال، فرمان زیر تعداد اتصالات فعال بر روی پورت 80 را با استفاده از ترکیبی از دستورات netstat و grep نظارت می‌کند:

watch "netstat -anp | grep -c ':80\b.*LISTEN'"

wat