دستور watch (اجرای مکرر یک دستور)
برای اجرای مکرر یک دستور، از این ابزار استفاده می شود. مکانیزم ابزار watch به این صورت است که ، دستور دریافتی را در فاصله زمانی معین اجرا کرده و نتیجه را در خروجی نمایش می دهد. ابزار watch بخشی از بسته نرم افزاری procps-ng یا procps میباشد که این بسته بصورت پیشفرض، بر روی اکثر توزیعهای لینوکس نصب می گردد.
با بیان چند مثال به بررسی این ابزار می پردازیم. (علامت $ در ابتدای دستورات، بیانگر اجرای دستور توسط کاربر معمولی می باشد)
مثال 1
& اجرای مکرر دستور free ، توسط ابزار watch
$ watch free -m
Every 2.0s: free -m Sun Jun 30 15:43:56 2019
total used free shared buff/cache available
Mem: 7941 1342 2560 43 4038 6229
Swap: 8189 1 8188
شرح دستور : با اجرای دستور watch ، محتوای کنونی ترمینال جای خود را به خروجی دستور free -m می دهد. دستور free -m ، وضعیت حافظه سیستم را برحسب مگابایت نمایش می دهد.
در سمت چپ بالای صفحه، فاصله زمانی به روز رسانی و دستور اجرا شده مشخص می باشد. همچنین زمان و تاریخ فعلی سیستم، در سمت راست بالای صفحه قابل رویت است.
استفاده ساده و بدون سوییچ دستور watch بمانند مثال بالا، سبب اجرای دستور دریافتی در هر دو ثانیه می شود.
با کلیدهای Ctrl+c ، اجرای دستور watch ، پایان می یابد.
مثال 2
& تعیین فاصله زمانی مابین هر اجرای دستور دریافتی، توسط ابزار watch
$ watch -n 10 free -m
Every 10.0s: free -m Mon Jul 1 12:35:55 2019
total used free shared buff/cache available
Mem: 7941 1363 2318 43 4260 6193
Swap: 8189 1 8188
شرح دستور : برای تعیین فاصله زمانی میان هر اجرا، از سوییچ n استفاده می شود. در این مثال اجرای دستور free -m هر 10 ثانیه یکبار می باشد.
مثال 3
& حذف عنوان یا Header ، در زمان اجرای دستور watch
$ watch -t free -m
total used free shared buff/cache available
Mem: 7941 1365 2314 43 4262 6191
Swap: 8189 1 8188
شرح دستور : سوییچ t ، سبب حذف Header در خروجی می شود.
& با دستور زیر میتوان یک ساعت ساده در خروجی ایجاد نمود.
$ watch -n 1 -t date +%H%M%S
مثال 4
& مشخص نمودن (Highlight) تغییرات خروجی، در اجرای ابزار watch
$ watch -d free -m
Every 2.0s: free -m Sun Jul 7 23:14:18 2019
total used free shared buff/cache available
Mem: 7941 911 5660 37 1369 6682
Swap: 8189 0 8189
شرح دستور : همانطور که بیان شد، ابزار watch پشت سر هم دستور دریافتی را اجرا کرده و خروجی را بر می گرداند. برای نمایش تغییرات خروجی فعلی با خروجی قبلی، از سوییچ d استفاده می شود.
مثال 5
& اتمام خودکار اجرای ابزار watch ، در صورت تغییر خروجی دستور دریافتی
$ watch -g free -m
شرح دستور : استفاده از سوییچ g سبب می گردد که در صورت تغییر مقادیر خروجی دستور free -m ، اجرای دستور watch بصورت اتومات خاتمه یابد.
مثال 6
& استفاده از " یا ' (Single or Double Quotes) توسط ابزار watch
* چنانچه دستور ارسالی دارای | یا همان Pipe باشد، باید از " یا ' استفاده شود.
$ watch "ps aux | sort -nrk 3,3 | head -n 5"
Every 2.0s: ps aux | sort -nrk 3,3 | head -n 5 Sun Jul 7 23:38:16 2019
masih 2271 10.9 6184 3389 ? Rl 20:11 22:31 /opt/libreoffic
root 1216 5.3 6085 9049 tty1 Rsl+ 19:55 12:00 /usr/libexec/Xo
masih 1712 1.4 1863 1709 ? Sl 19:56 3:11 cinnamon --repl
root 2006 0.9 0 0 ? D 20:07 2:01 [kworker/u8:2]
root 2944 0.4 0 0 ? D 22:44 0:15 [kworker/u8:1]
شرح دستور : دستور ps ، ابزاری برای نمایش فرایندهای در حال اجرا می باشد. در بالا با استفاده از ترکیب دستورات ، خروجی شامل پنج فرایندی می باشد که بیشترین توان CPU را بکار گرفتهاند.
* ارسال چند دستور به ابزار watch
$ watch "echo Uptime : ; uptime;echo '*****' ; echo Memory Status : ; free -m ; echo '*****' ; echo Hard Status : ; df -h"
Every 2.0s: echo Uptime :;uptime;echo '*****';... Sun Jul 7 23:56:24 2019
Uptime :
23:56:24 up 4:01, 1 user, load average: 0.17, 0.22, 0.25
*****
Memory Status :
total used free shared buff/cache available
Mem: 7941 915 5648 37 1378 6678
Swap: 8189 0 8189
*****
Hard Status :
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 8.0K 3.9G 1% /dev/shm
tmpfs 3.9G 1.7M 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda3 147G 6.8G 133G 5% /
tmpfs 3.9G 144K 3.9G 1% /tmp
/dev/sda1 976M 187M 723M 21% /boot
/dev/sda2 393G 65G 309G 18% /home
tmpfs 795M 40K 795M 1% /run/user/1000
شرح دستور : در مثال بالا ابتدا عبارت Uptime : نمایش داده می شود و با اجرای دستور uptime ، مدت زمان روشن بودن سرور نمایش می یابد. سپس عبارت ***** در خروجی قرار می گیرد. و همینطور سایر دستورات اجرا شده و نتایج در خروجی قرار می گیرد.
جالب بود. (: