منبع اصلی نوشتار زیر در این لینک قرار دارد

تکرار اجرای یک دستور در لینوکس با استفاده از حلقه ها

فرض کنید می خواهید یک دستور را در خط فرمان به تعدادی مشخص یا در فاصله های زمانی مشخص اجرا کنید، به عبارتی می خواهید خروجی دستور را به تعدادی مشخص یا در فاصله های زمانی معینی تکرا و مشاهده کنید. به طور مثال می خواهید دستور uptime را در فاصله زمانی هر 30 ثانیه یکبار مشاهده کنید تا بار یا load روی سیستم (پردازنده) را ببینید.

اجرای یک دستور به تعدادی مشخص

با استفاده از حلقه for می توانید یک دستور مانند uptime را به تعدادی مشخص (به طور مثال 10 بار) اجرا کنید. شکل کلی استفاده به صورت زیر است.

for i in range; do command(s); done

به طور مثال برای تکرار 10 بار دستور uptime از دستور زیر استفاده کنید.

for i in {1..10};do uptime; done

یا می خواهید دو دستور uptime و w را پشت سرهم و به تعداد 5 بار اجرا شوند. توجه داشته باشید که باید در حلقه for دستور ها (در اینجا uptime و w) با علامت ; از هم جدا شوند.

for var in {1..5}; do uptime;w; done

اجرای یک دستور در فاصله های زمانی معین

با استفاده از حلقه while و دستور sleep می توانید یک دستور مانند uptime را در فاصله زمانی مشخص (به طور هر 30 ثانیه ) اجرا کنید. شکل کلی استفاده به صورت زیر است.

while true; do commands(s);sleep n(sec) done

یا می توانید یک متغیر تعریف کرده و سپس به مقدار آن متغیر دستوری را در فاصله زمانی مشخص اجرا کنید.

count=1

while count<n; do command(s);sleep n(sec);count=count+1; done

در حالت اول هیچ محدودیتی تعیین نشده است، پس تا زمانی که کلید های Ctrl+Z را کلیک نکنید، دستور اجرا خواهد شد. اما در خالت دوم دستور به تعدادی مشخص (از یک تا n) اجرا خواهد شد. دستور sleep n(sec) باعث وقفه ای به اندازه n ثانیه خواهد شد.

while true; do uptime;w;sleep 30;done

Terminate -> Click Ctrl+z

count=1

while true; do uptime;w;sleep 30;count=count+1;done

دستور watch برای تکرار یک دستور در فاصله زمانی هر n ثانیه را می توانید از لینک نیز مطالعه کنید.



برچسب ها : , , , , ,