دستور sleep برای به تاخیر انداختن اجرای اسکریپت ها یا دستورات در لینوکس (و سایر سیستم های یونیکس) استفاده می شود. در این آموزش مناسب برای مبتدیان، نحوه استفاده از دستور sleep در لینوکس و کارهایی که انجام می دهد را به شما نشان می دهیم و مثال های مفیدی را نیز درج می کنیم.
میتوانید از دستور sleep در هر توزیع لینوکس، از جمله Debian، Ubuntu ، Linux Mint، CentOS و غیره استفاده کنید. حتی می توانید از آن در مک یا سایر سیستم های مشابه یونیکس استفاده کنید. این دستور در تمام توزیعهای لینوکس موجود است، نیازی به نصب آن ندارید.
در این آموزش، نحوه استفاده از دستور sleep را در اسکریپت های Terminal/shell/ssh و bash به شما نشان خواهیم داد. بنابراین شما نیاز به دسترسی ترمینال به توزیع لینوکس یا دسترسی SSH به سرور لینوکس دارید .
دستور اولیه sleep
سینتکس اصلی دستور sleep در لینوکس به صورت زیر است:
sleep number[suffix]
عدد می تواند هر عدد صحیحی باشد و پسوند آن می تواند باشد:
- “s” برای ثانیه (پیشفرض)
- “m” برای دقیقه
- “h” برای ساعت ها
- “d” برای روزها
بنابراین می توانید یک فرمان را برای چند ثانیه، دقیقه، ساعت یا روز متوقف کنید.
ابتدایی ترین مثال این است:
sleep 5m
این دستور را به مدت ۵ دقیقه مکث/تاخیر می کند. اگر می خواهید از حالت دستور sleep خارج شوید، فقط از CTRL + C استفاده کنید.
در زیر مثال های دقیق تر و مفیدتری ارائه خواهیم کرد.
با استفاده از دستور sleep در لینوکس، یک “زنگ هشدار” .mp3 را اجرا کنید
این محبوب ترین و پرکاربردترین نمونه دستور sleep در لینوکس است. از دستور sleep برای به تاخیر انداختن اجرای یک فایل mp3. از برنامه دیگری استفاده کنید. به عنوان مثال، اگر VLC نصب کرده اید، می توانید از:
sleep 30m && nvlc /path/to/alarm.mp3
این فایل alarm.mp3 را پس از ۳۰ دقیقه با نسخه CLI VLC اجرا می کند. می توانید قسمت دوم این دستور را با هر مدیا پلیری که روی سیستم خود نصب کرده اید جایگزین کنید.
بعد از ۱ ساعت از طریق ترمینال یک وب سایت در فایرفاکس باز کنید
می توانید از دستور sleep به همراه گزینه های CLI برای فایرفاکس استفاده کنید تا پس از مدت زمان مشخصی وب سایتی را باز کنید.
به عنوان مثال، شما می توانید وب سایت ما را پس از ۱ ساعت با اجرای زیر باز کنید:
sleep 1h && firefox https://linuxstans.com
۱ ساعت پس از اجرای این دستور، فایرفاکس با وب سایت ما باز می شود.
یکی دیگر از دستورهای مشابهی که من اغلب استفاده می کنم، باز کردن ویدیوهای YouTube است (اغلب آنها یک پخش برنامه زنده برنامه ریزی شده هستند). بنابراین، برای مثال، اگر شخصی یک استریم را در ۲/۵ ساعت بعد در YouTube برنامه ریزی کند، من دستور sleep را با فایرفاکس و پیوندی به ویدیوی YouTube او اجرا می کنم:
sleep 2.5h && firefox -new-tab https://www.youtube.com/...
با این کار آن ویدیوی یوتیوب بعد از دو ساعت و نیم در یک تب جدید در فایرفاکس باز می شود.
یک تایمر موقت با دستورات echo و sleep اجرا کنید
مثال دیگری که من گاهی اوقات با دستور sleep انجام میدهم؛ اجرای یک “تایمر” موقتی است زمانی که در ترمینال کار می کنم و چراکه برای باز کردن یک تایمر واقعی تنبلی می کنم.
برای مثال، اجرای این دستور:
echo "Start" && sleep 30 && echo "Stop"
ترمینال کلمه “start” را در خروجی چاپ می کند، ۳۰ ثانیه صبر می کند و خروجی stop را نمایش می دهد. میتوانید نسخه پیچیدهتری از این مثال را اجرا کنید، اما در آن مرحله، ممکن است باز کردن یک برنامه تایمر سادهتر باشد.
یک مثال پیچیده تر می تواند این باشد:
echo "Start now" && sleep 10 && echo "10 seconds have passed" && sleep 10 && echo "20 seconds have passed" && sleep 40 && echo "A minute has passed"
این دستور خروجی “Start now” را چاپ می کند، پس از ۱۰ ثانیه خروجی “10 seconds have been” را نمایش میدهد؛ ۱۰ ثانیه صبر کنید، و “20 seconds have passed” را چاپ می کند، ۴۰ ثانیه صبر کنید و خروجی “A minutes has been” را چاپ می کند. شما می توانید این دستور را تغییر دهید و دستورات sleep و echo را ترکیب کنید تا نتیجه مفیدی برای شما داشته باشد.
با دستور sleep کامپیوتر را در حالت Sleep قرار دهید
ممکن است افراد فرمان sleep را با قرار دادن رایانه در حالت Sleep اشتباه کنند، اما این دو با هم مرتبط نیستند. البته میتوانید از دستور sleep برای خواباندن رایانه استفاده کنید:
sleep 1 && systemctl suspend
با این کار کامپیوتر شما بعد از ۱ ثانیه به حالت خواب می رود.
برای قرار دادن رایانه در حالت Hibernate، اجرا کنید:
sleep 1 && systemctl hibernate
همچنین می توانید پس از ۱ ثانیه کامپیوتر را خاموش کنید :
دستور sleep را در یک اسکریپت bash اجرا کنید
همچنین می توانید از دستور sleep در اسکریپت bash استفاده کنید.
یک مثال پایه از یک اسکریپت bash با دستور sleep:
SLEEP_SECONDS="15"
echo "The current time is: $(date +%T)"
echo "Waiting ${SLEEP_SECONDS} seconds"
sleep ${SLEEP_SECONDS}
echo "The current time is: $(date +%T)"
خروجی این اسکریپت bash مشابه موارد زیر خواهد بود:
The current time is: 14:38:28
Waiting 15 seconds
The current time is: 14:38:43
میتوانید از دستور sleep بهطور مستقیم در یک اسکریپت bash، بدون متغیر استفاده کنید، اما مفیدتر است و اغلب با متغیری استفاده میشود که در سراسر اسکریپت استفاده میشود.
شما می توانید تمام نمونه های این آموزش را در یک اسکریپت bash ترکیب کنید. بنابراین می توانید یک تایمر در یک اسکریپت bash ایجاد کنید و هر زمان که بخواهید ./timer.sh را اجرا کنید. این ساده تر از تایپ کردن دستور کامل است.
آیا نمونه دستور sleep دیگری برای لینوکس دارید؟
نظر خود را با من در میان بگذارید.
افزودن نظر