در اسکریپتنویسی و مدیریت سیستمهای لینوکس، کنترل ترتیب اجرا و زمانبندی فرمانها اهمیت زیادی دارد. یکی از ابزارهای ساده و کاربردی برای این کار، دستور sleep است. این دستور به شما اجازه میدهد اجرای یک فرمان یا اسکریپت را برای مدت زمان مشخصی متوقف کنید و پس از گذشت آن زمان، اجرای باقی فرمانها ادامه یابد.
در این مطلب با دستور sleep، ساختار آن، واحدهای زمانی قابل استفاده، مثالهای ساده و پیشرفته و نکات کاربردی آشنا خواهید شد.
دستور Sleep چیست؟
دستور sleep ابزاری برای ایجاد وقفه در اجرای دستورات یا اسکریپتها است. این دستور مدت زمان مشخصی اجرای فرآیند جاری را متوقف نموده و پس از گذشت آن زمان، اجرای باقی دستورات ادامه پیدا میکند. به عبارتی، میتوان sleep را به عنوان دکمه توقف موقت اجرای دستور در نظر گرفت.
ساختار کلی دستور Sleep
ساختار پایهای دستور sleep به صورت زیر است:
sleep NUMBER[SUFFIX]
- NUMBER مقدار مدت زمان مکث است
- [SUFFIX] واحد زمانی است که میتواند مشخص شود یا پیشفرض اعمال شود
اگر واحد زمانی مشخص نشود، ثانیه پیشفرض در نظر گرفته میشود.
اگر به دنبال یک راهکار میزبانی قدرتمند هستید، سرور مجازی پارسدو با امکان انتخاب سیستمعامل دلخواه و تحویل آنی در ایران، فرانسه، آلمان، هلند و آمریکا، انتخابی هوشمندانه است.
واحدهای زمانی قابل استفاده
واحدهای زمانی که میتوان به دستور sleep داد عبارتند از:
- s: ثانیه (پیشفرض)
- m: دقیقه
- h: ساعت
- d: روز
همچنین میتوان مقادیر اعشاری استفاده کرد، برای مثال:
sleep 0.5
این دستور باعث مکث به مدت نیم ثانیه میشود. ترکیب واحدهای زمانی هم امکانپذیر است، مثلا sleep 1h 30m به معنای مکث یک ساعت و نیم است.
استفاده از Sleep در خط فرمان
دستور sleep میتواند به صورت مستقیم در خط فرمان برای ایجاد مکث بین اجرای فرمانها استفاده شود. مثال ساده:
echo "Start" sleep 5 echo "End after 5 seconds"
در این مثال ابتدا پیام Start چاپ میشود، سپس ۵ ثانیه مکث رخ میدهد و در نهایت پیام بعدی چاپ میشود.
استفاده از Sleep در اسکریپتهای Bash
در اسکریپتهای Bash، sleep بسیار کاربردی است. میتوان با آن فاصله زمانی بین مراحل اسکریپت ایجاد کرد تا اجرای برنامهها آرامتر و کنترلشدهتر انجام شود.
مثال ساده
#!/bin/bash echo "Step one" sleep 3 echo "Step two after 3 seconds"
در این اسکریپت، ابتدا پیام مرحله اول چاپ میشود، سپس ۳ ثانیه مکث رخ میدهد و در نهایت مرحله دوم اجرا میشود.
استفاده در حلقهها
یکی از کاربردهای رایج sleep، ایجاد مکث بین تکرارهای حلقه است. مثال:
#!/bin/bash
for i in {1..5}
do
echo "Iteration number $i"
sleep 2
done
در این حلقه، بین هر تکرار ۲ ثانیه مکث ایجاد میشود.
زمانبندی ساده
گاهی لازم است فرآیندها با فاصله مشخص اجرا شوند. مثال:
#!/bin/bash while true do echo "Checking status..." sleep 10m done
این اسکریپت هر ۱۰ دقیقه یکبار دستور خود را اجرا میکند.
موارد استفاده رایج دستور Sleep
- زمانبندی اجرای فرمانها و اسکریپتها
- کنترل تعداد درخواستها به سرویسهای خارجی
- کاهش فشار روی منابع سیستم
- بهبود خوانایی اسکریپت و نشان دادن ترتیب اجرا
تفاوت Sleep با Wait
- : sleep اجرای اسکریپت را برای مدت زمان مشخص متوقف میکند
- : wait منتظر میماند تا یک یا چند فرآیند پسزمینه پایان یابند
sleep برای مکث زمانبندیشده مناسب است، در حالی که wait برای کنترل فرآیندهای پسزمینه کاربرد دارد.
نکات کاربردی
- همیشه مقدار مکث را مشخص کنید، مقدار خالی باعث خطا میشود
- مقادیر بسیار طولانی ممکن است باعث بلاک شدن طولانی اسکریپت شود
- ترکیب sleep با حلقهها و منطق شرطی باعث کنترل بهتر اجرای برنامهها میشود
جمعبندی
دستور sleep ابزار پایهای و مفیدی در لینوکس و Bash است. با استفاده از آن میتوان اجرای برنامهها و اسکریپتها را برای مدت زمان مشخص متوقف کرد، زمانبندی را کنترل کرد و اجرای مراحل را با فاصله مناسب انجام داد. یادگیری واحدهای زمانی، ترکیب با حلقهها و کاربردهای متنوع sleep باعث میشود اسکریپتهای حرفهایتر و قابل کنترلتری داشته باشید.