خیلی وقت ها شده که بخواهیم یک دستور را برای اجرا در زمانی خاص زمانبندی کنیم. مثلا ممکن است در ساعاتی از شب دریافت فایل از اینترنت رایگان باشد ولی در آن ساعات خواب باشیم و بیدار ماندن سخت! برای حل این مشکل در ویندوز IDM داشتیم، در لینوکس چه کنیم ؟
در این پست قصد دارم نرمافزاری رو به شما معرفی کنم به نام at که برای برنامهریزی کردن دستورات است و کار با آن نیز بسیار ساده است. at تقریبا در همه توزیعهای گنولینوکس نصب است.
یک مثال ساده
دستورات زیر را در ترمینال وارد کنید:
at 2:00 echo \"Hello World!\" >> /home/$USER/log
و سپس Ctrl + D بزنید.
مثال بالا از at میخواهد که دستور خط دوم را که خود عبارت Hello World! را در لاگ کاربر کپی میکند، در ساعت ۲ صبح اجرا کند. زدن Ctrl + D بعد از وارد کردن خط دوم، به at پایان وارد کردن لیست کارها را اعلام میکند.
برای اینکه at بتواند دستورات را اجرا کند باید Daemon آن در حال اجرا باشد. اگر اوبونتو دارید دستور پایین این کار را انجام میدهد:
sudo service atd start
همانجور که مشخص است با at میتوان تمامی کارها را زمانبندی کرد. فرض کنید لیستی از فایلها برای دانلود دارید و میخواهید دانلود ساعت ۲ صبح شروع شده و در ساعت ۸ صبح پایان یابد. ابتدا لینکهای مورد نظر را در فایلی متنی به طوری که هر لینک در یک خط باشد کپی کنید.
در این مثلا ما فایل را dl-list.txt نامیدیم و از نرمافزار دانلود Aria2 برای دانلود کمک گرفتیم.
at 2:00 + 1000 days ٰaria2c -i ~/dl-list.txt -j 1 -x 5
و سپس Ctrl + D. مثال بالا فرمان دانلود را با کمک at، به مدت ۱۰۰۰ روز پیاپی در ساعت ۲ صبح اجرا میکند.
حالا برای بسته شدن دانلود در ۸ صبح:
at 8:00 + 1000 days pkill aria2c
بعضی از وبسایتها ممکن است فایل را تنها در اختیار کاربرانی که در آن وبسایت حساب دارند بگذارند (مثلا Rapidshare) که در آن صورت کافیست نام کاربری و رمزعبور خود را در قالب اطلاعات درخواست دانلود با aria2 بفرستید:
aria2c -i ~/dl-list.txt -j 1 -x 5 --http-user=ali --http-passwd=123456
دستور بالا تک تک فایلهای لیست شده در dl-list.txt را با نام کاربری ali و رمزعبور 123456 دانلود میکند.
جزییات at
atq لیست دستورات برنامهریزی شده را به همراه شماره آنها نشان میدهد.
atrm دستورات برنامهریزی شده را پاک میکند؛ به این صورت:
atrm que_id
برای یافتن que_id دستور مورد نظر، از atq کمک بگیرید.
قالب زمانی به صورت HH:MM وارد میشود، استفاده از am و pm هم معتبر است. مثلا ۸ صبح در مثال بالا را 8am هم میتوان نوشت.
تاریخ به صورت [CC]YY-MM-DD باید وارد شود، از مخفف ماه و روزها نیز میتوان استفاده کرد. عبارتهایی مثل فردا، امروز، عصر و نیمه شب هم معتبر هستند.
sun mon tue wed thu fri sat jan feb mar apr may jun jul aug sep oct nov dec tomorrow today noon midnight
برای تکرار یک کار در چند روز:
+ N days
چند زمانبندی پیچیدهتر با at :
at 3:00pm tomorrow at 2:00am jul 5 + 4 days at 2:00 2012-7-5 at 2:00 wed
نکتهها
- واحد های زمانی کوجک تر در اول قرار دارند. یعنی مثلا ساعت و دقیقه قبل از ماه.
- aria2 فقط یک نمونه برنامه برای دانلود است؛ Axel, wget و lftp از دیگر مثالها هستند.