اجرای مکرر یک فرمان در Bash

گاهی لازم است که خروجی یک دستور را در بازه‌های زمانی کوتاه بررسی کنید. مثلا زمانی که بخواهید تغییرات یک دایرکتوری را لحظه به لحظه زیر نظر داشته باشید، یا وضعیت یک سرویس را به صورت مداوم رصد کنید. در چنین شرایطی استفاده از cron که معمولا برای زمان‌بندی‌های بلندمدت مانند هفتگی یا روزانه است، مناسب نیست. در Bash برای تکرار یک دستور در بازه‌های زمانی هر چند ثانیه یک بار، دستور watch در نظر گرفته شده است.

شما می‌توانید خروجی این دستور را به صورت زنده مشاهده کنید و یا به کمک pipe کردن خروجی دستور تکرار شونده به tee، آن را در فایلی ذخیره کنید.

ساده‌ترین حالت استفاده از watch به این شکل است:


watch -n 1 ls -lrth

دستور بالا، هر یک ثانیه یک بار لیست فایل‌ها را به ترتیب آخرین تغییر نمایش می‌دهد. بنابراین در صورت افزودن یا حذف فایلی، تغییرات بلافاصله در انتهای لیست قابل مشاهده خواهد بود.

ذخیره خروجی در فایل

watch -n 1 "ls -lrth | tee -a list.txt"

در این حالت، خروجی علاوه بر نمایش در ترمینال، در فایل list.txt نیز ذخیره می‌شود.

پارامتر‌های پرکاربرد

  • -n عدد: تعیین فاصله زمانی بین هر اجرا به ثانیه را مشخص می‌کند (پیش فرض: ۲ ثانیه).
  • -d: برای هایلایت شدن تغییرات به وجود آمده در هر اجرا نسبت به اجرای قبلی می‌توان از این پارامتر استفاده کرد.
  • -b: می‌توان با این پارامتر در صورتی که دستور اجرا شده با خطا پایان یابد، صدای بیپ پخش کرد.
  • -g: یکی دیگر از آپشن‌های جذاب این دستور است که اگر خروجی دستور تغییر کرد تکرار را متوقف کند.
  • -e: در صورتی که از این کامند در یک اسکریپت استفاده کنید و بخواهید در صورت خطا تکرار متوقف شود، می‌توانید از پارامتر -e استفاده کنید. در این صورت کد خطای خروجی خود دستور watch برابر 4 خواهد بود.

امیدوارم این ابزار برایتان کاربردی و مفید باشد.

منبع تصویر بالای صفحه: Unsplash


منتشر شده

در

توسط

برچسب‌ها:

دیدگاه‌ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *