انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: شروع دانلود و خاموش شدن خودکار با تکیه بر cron و aria2c  (دفعات بازدید: 134074 بار)

0 کاربر و 3 مهمان درحال مشاهده موضوع.

آفلاین آرمان اسماعیلی

  • High Hero Member
  • *
  • ارسال: 2366
  • جنسیت : پسر
قبلا چند تاپیک با این موضوع در انجمن ایجاد شده. تصمیم گرفتم یک جمع‌بندی منظم از آنها ارائه کنم. مناسب برای کسانی که در ساعات رایگان شبانه دانلود می‌کنند.

فایلی مثلا با نام dl.txt بسازید و لینکهای دانلود مورد نظر را خط‌به‌خط در آن وارد کنید. برای لینکهایی که نیاز به authorisation و وارد نمودن user name و password دارند به صورت زیر عمل شود.
http://USER:PASS@example.com/address/
برای بعضی از سایت‌ها این روش کارساز نیست. روش دیگر این است که لینک را بدون تغییر بنویسیم و در عوض از دو آپشن
--http-user=USER
و
--http-passwd=PASSWORD
استفاده کنیم.

چکیده:
export EDITOR=nano
crontab -e
01 02 * * * aria2c -c -x16 -s16 -j2 -k 1M -i "/PATH/TO/dl.txt" -d "/PATH/TO/DOWNLOAD DIRECTORY/" -l dllog --log-level=notice
sudo crontab -e
59 06 * * * shutdown -h now

توضیح کامل:

ابتدا در ترمینال وارد کنید
export EDITOR=nano
با اجرای این دستور، ادیتور پیشفرض به nano تغییر می‌یابد (اگر نباشد از قبل). بسیاری با vim راحت نیستند. از جمله خودم :)

حال بنویسید
crontab -e
برای شروع دانلود در ساعت مثلا دو و یک دقیقه، خط زیر را وارد کنید.
01 02 * * * aria2c -c -x16 -s16 -j2 -k 1M -i "/PATH/TO/dl.txt" -d "/PATH/TO/DOWNLOAD DIRECTORY/" -l dllog --log-level=notice
این دستور از دو بخش تشکیل شده. بخش اول:
01 02 * * *
این بخش، زمانبدی cron است. ساختمان آن به این صورت است:
minute hour day-of-month month day-of-week
پس برای شخصی‌سازی زمان شروع دانلود کافی است دو عدد اول را تغییر دهید. * نیز به معنای همواره صحیح است. پس فرمان زیر هر روز ماه، هر ماه سال و هر روز هفته در ساعت دو و یک دقیقه اجرا می‌شود.

بخش دوم:
aria2c -c -x16 -s16 -j2 -k 1M -i "/PATH/TO/dl.txt" -d "/PATH/TO/DOWNLOAD DIRECTORY/" -l dllog --log-level=notice
این بخش دستوری است که قرار است سر زمان مقرر اجرا شود.

ابتدا aria2 را اگر نصب نیست، نصب کنید. دستور بالا را بنده به شخصه با تجربه به آن رسیده و بهترین نتیجه را از آن می‌گیرم. معنای هر آپشن آن:
c : دانلود ادامه دار (resume). پس اگر فایلهای نیمه تمام را از دایرکتوری جابه‌جا نکنید، aria2 خود هر شب دانلود را ادامه می‌دهد.
x16 و s16 : برای دانلود هر فایل از 16 اتصال موازی استفاده می‌شود. (به حداکثر سرعت ممکن خواهید رسید)
j : تعداد دانلودهای موازی توسط این سوییچ تنظیم می‌گردد. مقدار پیشفرض آن 5 است. یعنی دانلود 5 فایل به طور همزمان.
k : به صورت پیشفرض آریا به ازای هر 20 مگابایت یک کانکشن می‌سازد. یعنی مثلا برای یک فایل 100 مگی، 5 کانکشن. اما با قرار دادن آرگومان 1M مقابل این آپشن، به ازای هر 1 مگابایت یک کانکشن ساخته می‌شود. در اینصورت تمام فایل‌های بالای 16 مگ با بیشترین تعداد ممکن اتصال دانلود خواهند شد. و خب احتمالا می‌دانید رمز دستیابی به چنین سرعتی، همین تعداد بالای اتصال است.
i : آدرس فایل حاوی urlهای دانلود.
d : آدرس دایرکتوری دانلود.
l : با توجه به اینکه پردازه‌ی aria2 در پس‌زمینه انجام می‌شود، با این آپشن جزییات دانلود در فایلی با نام dllog در دایرکتوری home ذخیره می‌شود.

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

با فشردن Ctrl+X و y و Enter تغییرات را ذخیره کنید. حال می‌خواهیم زمان خاموش شدن سیستم را تنظیم کنیم که به دلیل آنکه فرمان مورد استفاده به دسترسی ریشه نیازمند است، آن را داخل cron کاربر ریشه می‌گذاریم:
sudo crontab -e
اگر ساعت خاموش شدن خودکار مثلا شش و پنجاه و نه دقیقه باشد، خط زیر را وارد کنید.
59 06 * * * shutdown -h now
ذخیره کرده و خارج شوید.

کار تمام است.

اکنون داخل ترمینال بنویسید:
crontab -l
باید چیزی شبیه این ببینید:
01 02 * * * aria2c -c -x16 -s16 -j2 -k 1M -i "/PATH/TO/dl.txt" -d "/PATH/TO/DOWNLOAD DIRECTORY/" -l dllog --log-level=notice

پ.ن. ۱: در تمام این مطلب باید به جای PATH/TO/dl.txt/ و /PATH/TO/DOWNLOAD DIRECTORY/ ، آدرس‌های محلی سیستم خودتان را جایگزین کنید.

پ.ن. ۲: به شخصه ترجیح می‌دهم سیستم خاموش نشده و به جای آن suspend شود. برای این منظور به جای shutdown، از این دو خط استفاده کنید:
59 06 * * * pkill aria2c
00 07 * * * pm-suspend

پ.ن. ۳:‌ لینک‌های دانلود شده به طور خودکار از فایل dl.txt حذف نخواهند شد.

پ.ن. ۴: شاید بخواهید در ساعات روز و به طور دستی دانلود را از سر بگیرید. برای این منظور کافی است یک alias تعیین کنید.

دستور زیر را در ترمینال وارد کنید:
echo "alias resume='aria2c -c -x16 -s16 -j2 -k 1M -i "/PATH/TO/dl.txt" -d "/PATH/TO/DOWNLOAD DIRECTORY/" -l dllog --log-level=notice'" >> ~/.bash_aliases
اگر نمی‌دانید این دستور چه می‌کند؛ یک alias تعریف می‌کند با نام resume (به جای resume هر فرمان دلخواه دیگری را نیز می‌توان نوشت. به شرط آنکه این فرمان آزاد باشد و برنامه‌ی دیگری از آن استفاده نکند.) و آن را به فایل bash_aliases./~ اضافه می‌کند. از این به بعد هر گاه دستور resume را داخل ترمینال صادر کنید، انگار عبارت داخل کوتیشن ' ' را وارد کرده‌اید و دانلود آغاز می‌گردد.


پ.ن. ۵: گنو/لینوکس فوق‌العاده است! می‌توانید بیرون آمدن از حالت sleep یا حتی روشن شدن رایانه را نیز خودکار کنید. این تاپیک راهنمای شما است:
http://forum.ubuntu.ir/index.php?topic=59242.0
« آخرین ویرایش: 01 بهمن 1393، 09:01 ب‌ظ توسط آرمان اسماعیلی »
صفحه‌ی من در اینستاگرام: ‎‎@armanes92

آفلاین دانیال بهزادی

  • ناظر انجمن
  • *
  • ارسال: 19720
  • جنسیت : پسر
  • Urahara Kiesuke
    • وبلاگ
اگه این ارسال بهت کمک کرد، دنبال دکمهٔ تشکر نگرد. به جاش تو هم به جامعهٔ آزادت کمک کن

آفلاین sobhan

  • Full Member
  • *
  • ارسال: 139
  • جنسیت : پسر
  • i am how i am and i cannot be changed
فکر کنم با at هم بشه
http://azadrah.net/2012/07/schedule-tasks-with-at/
و خیلی راحت تر باشه
remove the fun of unix with mac

آفلاین حامد سپهر

  • High Hero Member
  • *
  • ارسال: 1556
  • جنسیت : پسر
من تو ترمینال زدم crontab -e بعدش این صفحه اومد



بعدش هم قیافه من اینطوری شد  :o یکی بگه این الآن چیه؟

آفلاین محمدرضا ح.

  • High Hero Member
  • *
  • ارسال: 3117
  • جنسیت : پسر
  • Your Future is our Past!
من تو ترمینال زدم crontab -e بعدش این صفحه اومد



بعدش هم قیافه من اینطوری شد  :o یکی بگه این الآن چیه؟

GNU nano Text Editor هست :)

البته فایلی که باز کردید رو کامنت هاش رو حتما بخونید :)

برای خروج هم ctrl+X رو بگیرید ;)
قاضی : تو السالوادور چه کار میکردی؟
چه‌گوارا : آفتاب میگرفتم
قاضی : پس چرا ساختمان دادگستری رو منفجر کردی؟
چه‌گوارا : جلوی آفتاب رو گرفته بود

آفلاین آرمان اسماعیلی

  • High Hero Member
  • *
  • ارسال: 2366
  • جنسیت : پسر
درسته مشکلی نداره. دستورها رو در آخر اضافه کنید. برای ذخیره هم که گفتن از Ctrl+x استفاده کنید. فقط اول مطمئن بشید فایل با کاربر ریشه باز نشده باشه
صفحه‌ی من در اینستاگرام: ‎‎@armanes92

آفلاین hamed.asl

  • High Sr. Member
  • *
  • ارسال: 534
  • جنسیت : پسر
ممنون حرف نداره  \\:D/  فقط اون قسمت ک باید دکمه ی esc رو میزدیم و :X   رو وارد میکردیم متوجه نشدم...کجا و برای چی باید این کارو کنم...توی محیط کرون که زدم هیچ اتفاقی نمیافته

البته الان همه چیز داره مثل ساعت کار میکنه ...برای اطلاعات خودم میخوام ...ممنون ....و یک سوال اگر وسط دانلود بخوام عملیات رو کنسل کنم!! مثلا ۳ نصفه شب! اونوقت چه طور باید عمل کنم؟


آفلاین آرمان اسماعیلی

  • High Hero Member
  • *
  • ارسال: 2366
  • جنسیت : پسر
احتمالا ادیتور پیشفرض شما هم همون نانو بوده.
برای قطعش: pkill aria2c
صفحه‌ی من در اینستاگرام: ‎‎@armanes92

آفلاین hamed.asl

  • High Sr. Member
  • *
  • ارسال: 534
  • جنسیت : پسر
درسته نانو بود...بازم ممنون

آفلاین محمد علی صدرایی

  • Sr. Member
  • *
  • ارسال: 314
  • جنسیت : پسر
  • میزکار kde سیستم عامل فدورا
    • وبگاه محمد علی صدرایی
عالی

آفلاین hamed.asl

  • High Sr. Member
  • *
  • ارسال: 534
  • جنسیت : پسر
 یه سوال دیگه...میشه برای دانلود توی میان روز و نه نصفه شب ساعت و دقیقه رو هم روی حالت ستاره گزاشت و با یک فرمان دانلود رو شروع و با یه فرمان دیگه (همون  pkill aria2c) قطعش کرد؟ یعنی دستور ادامه و قطع بدیم بدون ایجاد تغییر های مداوم در کرون؟


آفلاین آرمان اسماعیلی

  • High Hero Member
  • *
  • ارسال: 2366
  • جنسیت : پسر
اگر ساعت و دقیقه رو روی ستاره بذارید معنیش اینه که هر دقیقه فرمان دانلود صادر میشه و aria شروع میکنه به دانلود. این کاری که میخواید انجام بدید با استفاده از alias شدنیه. فرمانهای زیر رو به ترتیب وارد و اینتر کنید.
alias resume='aria2c -c -s16 -x16 -i "/PATH/TO/dl.txt" -d "/PATH/TO/DOWNLOAD DIRECTORY/" -l dllog --log-level=notice'
alias stop='pkill aria2c'
زین پس هر بار داخل ترمینال بنویسید resume، دانلود آغاز و با نوشتن stop متوقف می‌شود.
صفحه‌ی من در اینستاگرام: ‎‎@armanes92

آفلاین hamed.asl

  • High Sr. Member
  • *
  • ارسال: 534
  • جنسیت : پسر
 نمیدونم چه طور تشکر کنم ....تازه دارم به قدرت لینوکس پی میبرم ... کارتون واقعا ارزشمنده  :)

ممنون

آفلاین hamed.asl

  • High Sr. Member
  • *
  • ارسال: 534
  • جنسیت : پسر
سلام یه مشکلی ک این چند ش برام پیش اومده اینه ک مثلا اگر برای چند دقیقه نتم مشکل پیدا کنه یا سروری ک ازش دانلودمیکنم برای چند لحظه قطع بشه، عملیت کاملا متوقف میشه.آیا راهی هست ک بشه گزینه ی retry رو به دستور اضافه کنیم تا مثلا اگر لینکی جواب نداد ۱۰۰ بار اون لینک رو امتحان کنه هر ۱۵ ثانیه و بعد بره سراغ لینک بعدی...(و البته من چون لینک بعدی نداشتم عملیات متوقف میشد)...
خودم کمی سرچ کردم به این دو تا دستور رسیدم اما هر طور جا گزاری کردم توی کد بالا نتونستم زمان بندی بین هر تلاش رو تعیین کنم اگر ممکنه راهنمایی کنید ممنون :

-m, --max-tries=<N>
Set number of tries. 0 means unlimited. See also --retry-wait. Default: 5


--retry-wait=<SEC>
Set the seconds to wait between retries. With SEC > 0, aria2 will retry download when the HTTP server returns 503 response. Default: 0