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

زمان مطالعه: 5 دقیقه

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

اجرای خودکار دستورات در لینوکس
اجرای خودکار دستورات در لینوکس

روش­‌های اجرای خودکار دستورات در لینوکس هر چند ثانیه یک بار

یک مدیر سیستم­ در بیشتر اوقات باید یک دستور را بارها در یک بازه زمانی خاص اجرا کند. این کار به راحتی و با استفاده از دستورات ساده cron انجام می‌پذیرد. اما دستورات cron در هر دقیقه حداکثر فقط یک بار می‌توانند اجرا شوند. در بسیاری از موارد این 1 دقیقه خیلی آهسته است و ما به عملکرد بهتر و سرعت بیشتری برای اجرای دستورات نیاز داریم.

برای اجرای خودکار دستورات در لینوکس در بازه‌های زمانی معین می­‌توانید از چند روش استفاده کنید. چند روش معمول برای این کار عبارتند از:

  • دستور watch
  • دستور sleep

در ادامه قصد داریم به بررسی هر یک از این روش­‌ها برای اجرای خودکار دستورات در لینوکس بپردازیم.

اجرای خودکار دستورات در لینوکس با دستور watch

از دستور watch در لینوکس برای نمایش خروجی یک دستور به صورت دوره­‌ای و مکرر استفاده می­‌شود. با استفاده از watch خروجی یک دستور به صورت زنده نمایش داده می­‌شود و در بازه­‌های زمانی مشخص شده، تکرار می‌­شود. به بیانی دیگر، شما می­‌توانید خروجی برنامه را در همان لحظه تماشا کنید.

به طور پیش­‌فرض زمان اجرای دستور هر 2 ثانیه یک بار است. این فاصله را می­‌توان به صورت دلخواه تغییر داده و بازه زمانی مورد نظر خود را وارد کنید.

نظارت بر استفاده از حافظه

برای اجرای خودکار دستورات در لینوکس هر چند ثانیه یک بار، با نظارت بر استفاده از حافظه، می­‌‍توان از دستور watch به همراه دستور free استفاده کرد. دستور free اطلاعات مربوط به حافظه را نمایش می­‌دهد. برای این کار، دستور زیر را در ترمینال لینوکس تایپ کنید:

				
					watch free 
				
			

در دستور بالا، free هر 2 ثانیه یک بار اجرا می‌­شود و اطلاعات به صورت زنده نمایش داده می‌­شود. اطلاعاتی که شامل مصرف حافظه، حافظه آزاد و دیگر مقادیر مربوط به حافظه سیستم می‌باشد.

در دستوری که در زیر آمده، از دستور watch و free به همراه گزینه -m استفاده شده است. این گزینه باعث می‌­شود که دستور free اطلاعات را به مگابایت (MB) نمایش دهد.

				
					watch free –m
				
			

این دستور نیز مانند دستور بالا، باعث می­‌شود که free هر 2 ثانیه اجرا شود و اطلاعات مربوط به حافظه را با واحد مگابایت نمایش دهد. با این دستور اندازه‌گیری مصرف حافظه، با دقت بالاتری انجام می‌شود، مخصوصا زمانی که نیاز به نظارت بر مقادیر بزرگی در بازه‌های زمانی کوتاه دارید.

حال می­‌خواهیم بدانیم که چطور می­‌توانیم زمان اجرای خودکار دستورات در لینوکس را تغییر دهیم. مثلا اگر بخواهیم دستور به جای 2 ثانیه، هر 10 ثانیه یک بار اجرا شود، باید از دستور زیر استفاده کنیم.

				
					watch -n 10 free –m
				
			

این دستور علاوه بر نمایش اطلاعات مصرف حافظه به واحد مگابایت، باعث می­‌شود که دستور free هر 10 ثانیه یک بار اجرا شود. شما می­‌توانید عدد 10 که در دستور بالا آورده شده را براساس نیاز خود، به مقدار دلخواه تغییر دهید.

به عنوان مثال، فرض کنید می­‌خواهید فایل script.sh را هر 12 ثانیه اجرا کنید. می‌­توانید برای انجام این کار دستور زیر را اجرا کنید.

				
					watch -n 12 script.sh
				
			

دقت داشته باشید که برای اجرای دستور بالا ابتدا باید با استفاده از دستور cd به همان دایرکتوری­ که script.sh در آن قرار دارد رفته و سپس این دستور را اجرا کنید.

برخی گزینه­‌های کاربردی از دستور watch عبارتند از:

  • (beep) b-این گزینه این امکان را به شما می‌دهد که هر زمان که خروجی دستور تغییر کند، یک صدای بیپ شنیده شود تا به کاربر اطلاع دهد که مقدار خروجی تغییر کرده است.
  • (no-title) t-این گزینه عنوانی که در بالای خروجی نمایش داده می‌شود را حذف می‌کند و فقط خروجی دستور را نشان می‌دهد.
  • (differences) d-با استفاده از این گزینه می‌توانید تفاوت‌ها بین خروجی‌های متوالی را مشاهده کنید.
  • (precise) p-با استفاده از این گزینه از تفاوت‌ها یه صورت مفصل‌تری نمایش داده می‌شود و از تغییرات دقیق‌تری در خروجی برخوردار خواهید شد.
  • (interval) n-این گزینه به مدت زمان بین هر اجرای مکرر یک دستور اشاره دارد. به عبارتی دیگر، این گزینه یک فاصله زمانی است که بعد از هر اجرا، دستور دوباره تکرار می‌شود.
  • (color) c-با استفاده از این گزینه می‌توانید از رنگ‌ها در خروجی دستورات استفاده کنید تا خروجی را بهتر قابل مشاهده کند.

نظارت بر کنترل ورودی کاربران و وضعیت سرور

اطلاعات کاربران، آپتایم (uptime) و میانگین لود سرور(load average)، مواردی هستند که توسط دستورات مختلف در لینوکس ، قابل نظارت هستند. از این اطلاعات می­توانید برای تکرار اجرای دستورات در بازه­های زمانی مورد نظر استفاده کنید.

آپتایم و میانگین لود

از آپتایم و میانگین لود، برای ارزیابی عملکرد سیستم، شناسایی افزایش ترافیک و زمان­بندی تعمیرات استفاده می­شود. برای نظارت بر آپتایم و میانگین لود سرور می­توانید از دستور watch به همراه دستور uptime استفاده کنید.

				
					watch free –m
				
			

این دستور، میانگین لود سرور در بازه­‌های زمانی مشخص را نمایش می‌­دهد. همچنین دستور uptime به صورت پیش­فرض اطلاعات هر 10 ثانیه یک بار به روز می­کند. اما اگر بخواهید در بازه زمانی مورد نظر خود، دستور را تکرار کنید می­توانید از دستور زیر استفاده کنید.

				
					watch -n 5 uptime
				
			

در دستور بالا، uptime هر 5 ثانیه تکرار می­‌شود.

کنترل ورودی کاربران

برای کنترل ورودی کاربران و نظارت بر آن­ها می­توانید از دستوراتی مانند who استفاده کنید تا لیست کاربران فعال و وضعیت آن­ها را بررسی کنید.

				
					watch who
				
			

این دستور لیست کاربران وارد شده و وضعیت آن­ها را به صورت لحظه­‌ای نشان می­دهد. دستور who نیز مانند دستور uptime به صورت پیش­فرض اطلاعات را هر 10 ثانیه به روز می­کند. برای تعیین زمان دلخواه می­توانید مشابه دستور uptime عمل کنید.

				
					watch -n 5 who
				
			

نظارت بر جزئیات دستور کپی

در لینوکس، برای کپی کردن فایل از یک دایرکتوری به دایرکتوری دیگر از دستور cp استفاده می­شود. اما این دستور، پیشرفت داده­‌ها را نمایش نمی­دهد. برای دستیابی و مشاهده این اطلاعات می­توانید از دستور watch به همراه فرمان du -s استفاده کنید.

				
					cp source_file /destination/path/ &
watch -n 0.1 du -s /destination/path/source_file

				
			

در دستور بالا، source_file نام فایلی است که می­خواهید کپی کنید، /destination/path/ مسیر مقصدی است که می­خواهید فایل را در آن کپی کنید، & برای اجرای دستور در پس­‌زمینه است و watch -n 0.1 du -s /destination/path/source_file برای نظارت لحظه‌­ای بر میزان مصرف فضای دیسک توسط فایل در حال کپی شدن است.

همانند دستورات قبلی برای تعیین زمان دلخواه برای به روز کردن این دستور نیز می­توانید مانند دستور زیر عمل کنید.

				
					cp source_file /destination/path/ &
watch -n 5 du -s /destination/path/source_file

				
			

این دستور هر 5 ثانیه یک بار اجرا می­شود.

برای خروج از دستور watch می­توانید کلیدهای Ctrl + C را فشار دهید.

بدون دیدگاه

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

هاستvpsسرور اختصاصی