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

کمک و پشتیبانی => انجمن عمومی => نویسنده: رسول سعیدنژاد در 22 دی 1393، 01:38 ق‌ظ

عنوان: دستور شرطی واسه آریا2 حل شد!
ارسال شده توسط: رسول سعیدنژاد در 22 دی 1393، 01:38 ق‌ظ
سلام دوستان. با یک سوال چالشی دیگه در خدمت شما هستم  ;D
همون طور که میدونین من از آریا2 واسه دانلود استفاده می کنم.
دستورات رو توی کرون تنظیم می کنم واسه دانلود شبانه.
اینم لیست کلی دستور کرون:
15 01 * * * aria2c -c -j1 -x16 -s16 -k 1M -d /home/kubuntu/Downloads -i /home/kubuntu/Desktop/Link.txt -l downloadlog --log-level=notice > logdownloadaria2c && echo "my password" | sudo -S shutdown -h now
30 06 * * * pkill aria2c
35 06 * * * echo "my password" | sudo -S shutdown -h now

دیگه خودتون بهتر میدونین واسه چی اینجوری تنظیم کردم  ;)

خب حالا سوالم:
لینک های دانلود رو توی فایل تکست میذارم. اون لینک هایی هم که نخوام بگیرم # میذارم.
خب حالا. فرض کنین توی فایل تکست، چیزی واسه دانلود نباشه. خب طبق زمان بندی کرون وقتی چیزی نباشه دستور آریا2 رو تموم می کنه میره واسه شات داون (مثل امشب که یهو وسط وبگردی سیستم خاموش شد!! کف کردم!)

میخوام بدونم چه دستوری میشه قبل از آریا2 داد که اول چک کنه ببینه لینکی یا متنی (غیر از # ها) توی اون فایل txtاگه هست دانلود رو شروع کنه و اگه نیست کلا اون سطر کد رو (هم آریا هم دستور شات داون) نگیره و من اینجوری وسط کار کف نکنم؟؟  :D

مرسی خیلی ممنون مچکر  ;)
عنوان: پاسخ : دستور شرطی واسه آریا2
ارسال شده توسط: رسول سعیدنژاد در 22 دی 1393، 02:38 ق‌ظ
یکی از دوستان گیکم، دوتا ایده ی خیلی خوب داد. که اگه این سوال جوابی نداشته باشه، با اون دوتا ایده به جواب برسه.
اینجا نقل قول میکنم:

نقل‌قول
براش تعریف کنی که اگر دستور اول کمتر از مثلا 5 دقیقه طول کشید دستور دوم رو اجرا نکن و همونجا اخر کار باشه برات

نقل‌قول
یا اینکه دستور دوم رو (شات دان) تحت هیچ شرایطی زودتر از فلان ساعت اجرا نکن

فکر کنم اینا منطقی تر باشن نسبت به سوال خودم که میخوام فایل تکست چک کنه لینک ها رو بعد شروع کنه.

چون این دو ایده سریع تر به جواب میرسه به نظرم  ;)

در هر صورت اگه کسی ایده ای، جوابی چیزی به ذهنش میرسه مارو هم در کشف های خفنش شریک کنه  ;)
عنوان: پاسخ : دستور شرطی واسه آریا2
ارسال شده توسط: M!lad در 22 دی 1393، 02:41 ق‌ظ
دو تا راه به نظرم میرسه...

- یک اسکریپت کوچیک بنویسی به جای shutdown اون رو اجرا کنی، این اسکریپت لیست دانلودهات رو چک میکنه و مطابق اون تصمیم میگیره.
- یک دیالوگ قبل از shutdown باز کنی مثلا ۲۰ ثانیه فرصت بده که جلوی shutdown رو بگیری.
عنوان: پاسخ : دستور شرطی واسه آریا2
ارسال شده توسط: رسول سعیدنژاد در 22 دی 1393، 02:45 ق‌ظ
دو تا راه به نظرم میرسه...

- یک اسکریپت کوچیک بنویسی به جای shutdown اون رو اجرا کنی، این اسکریپت لیست دانلودهات رو چک میکنه و مطابق اون تصمیم میگیره.
- یک دیالوگ قبل از shutdown باز کنی مثلا ۲۰ ثانیه فرصت بده که جلوی shutdown رو بگیری.

مرسی میلاد جان.
ایده ی اول که خب دانشم در حد اسکریپت نویسی نیست. شرمنده  ;)
ولی ایده ی دوم به نظرم بهتر باشه.یعنی به صورت یه صفحه ی پاپ آپ؟ که کاربر خودش دستی اونو بتونه کنسل کنه. درسته؟ 
چجوری میشه دیالوگ تنظیم کرد واسه شات داون؟
عنوان: پاسخ : دستور شرطی واسه آریا2
ارسال شده توسط: M!lad در 22 دی 1393، 03:01 ق‌ظ
پس از مدتها چند خط Python نوشتیم ;D
dl/. آدرس لیست دانلودت هست، اگر چیزی توش پیدا نکنه سیستم رو off میکنه،‌خطوطی رو که با # شروع میشند هم در نظر نمیگیره،‌با دسترسی ریشه اجراش کن.
import os

flag = 0
f = open('./dl', 'r')
for line in f:
        if line[0] != '#':
                flag = 1
                break
if flag == 0:
        os.system("shutdown -h now")

برا دیالوگ هم باید اسکریپت نوشت، یک چیز شبیه این:
import Tkinter
import tkMessageBox
import os

top = Tkinter.Tk()
def cancel():
        exit()
b1 = Tkinter.Button(top, text = "Cancel", command = cancel)
b1.pack()
top.after(20000, lambda: top.destroy())
top.mainloop()
os.system("shutdown -h now")

من تسلطی تو ایجاد GUI تو Python ندارم و با یکم جستجو نوشتمش، برا همین خیلی ساده هست. ۲۰ ثانیه صبر میکنه اگر Cancel نکردی Shutdown میکنه.
میشه این دو رو با هم ترکیب کرد که اگر پای سیستم بودی و لینکی هم برا دانلود وجود نداشت باز ازت سوال بپرسه و بتونی پروسه shutdown رو لغو کنی.
عنوان: پاسخ : دستور شرطی واسه آریا2
ارسال شده توسط: doomhammer65ir در 22 دی 1393، 11:22 ق‌ظ
برای دیالوگ ها از این بهره ببرید:
http://en.wikipedia.org/wiki/Zenity
عنوان: پاسخ : دستور شرطی واسه آریا2
ارسال شده توسط: رسول سعیدنژاد در 22 دی 1393، 12:37 ب‌ظ
پس از مدتها چند خط Python نوشتیم ;D
dl/. آدرس لیست دانلودت هست، اگر چیزی توش پیدا نکنه سیستم رو off میکنه،‌خطوطی رو که با # شروع میشند هم در نظر نمیگیره،‌با دسترسی ریشه اجراش کن.
import os

flag = 0
f = open('./dl', 'r')
for line in f:
        if line[0] != '#':
                flag = 1
                break
if flag == 0:
        os.system("shutdown -h now")

مرسی از وقتی که گذاشتی. ولی این کد عکس هدف من عمل می کنه.
کد میگه اگه چیزی واسه دانلود نبود خاموش بشه سیستم. خب کرون هم که همین جوریه. اگه دانلودی نباشه میره واسه اجرای دستور شات داون
من میخوام اگه چیزی واسه دانلود نبود، خاموش نشه سیستم  ;)

نقل‌قول
برا دیالوگ هم باید اسکریپت نوشت، یک چیز شبیه این:
کد: [انتخاب]

import Tkinter
import tkMessageBox
import os

top = Tkinter.Tk()
def cancel():
        exit()
b1 = Tkinter.Button(top, text = "Cancel", command = cancel)
b1.pack()
top.after(20000, lambda: top.destroy())
top.mainloop()
os.system("shutdown -h now")


من تسلطی تو ایجاد GUI تو Python ندارم و با یکم جستجو نوشتمش، برا همین خیلی ساده هست. ۲۰ ثانیه صبر میکنه اگر Cancel نکردی Shutdown میکنه.
میشه این دو رو با هم ترکیب کرد که اگر پای سیستم بودی و لینکی هم برا دانلود وجود نداشت باز ازت سوال بپرسه و بتونی پروسه shutdown رو لغو کنی.
این به جواب سوالم نزدیک تره.
چون مثلا 20 ثانیه باعث میشه وقتی ساعت 1:15 پای سیستم نشستم و دارم کارام انجام میدم و موقع اجرای کرون تب در ساعت 1:15 می بینه دانلودی نیست و میره واسه شات داون، اون موقع بهم 20 ثانیه وقت میده که یا قبول کنم یا نکنم.
یا اگه داشت دانلود می کرد و من خواب بودم. بازم 20 ثانیه (چون زمان زیادی نیست و خوبه) صبر می کنه بعد خاموشش می کنه.
خیلی ممنون بابت وقتی که گذاشتی  ;)
عنوان: پاسخ : دستور شرطی واسه آریا2
ارسال شده توسط: M!lad در 22 دی 1393، 01:49 ب‌ظ
یک تغییر کوچیک تو اسکریپت اولی:

import os
f = open('./dl', 'r')
for line in f:
        if line[0] != '#':
                os.system("shutdown -h now")
عنوان: پاسخ : دستور شرطی واسه آریا2
ارسال شده توسط: رسول سعیدنژاد در 22 دی 1393، 01:54 ب‌ظ
یک تغییر کوچیک تو اسکریپت اولی:

import os
f = open('./dl', 'r')
for line in f:
        if line[0] != '#':
                os.system("shutdown -h now")

واقعا؟؟ چه خوب!
خب اونوخ یه سوال خنده دار (واسه منی که هنوز برنامه نویسی بلد نیستم)  ;D
این دستور رو باید دقیقا کجا بذارم؟
باید ازش خروجی اسکریپت بگیرم؟
باید توی ترمینال بزنم و اوکی کنم؟
باید بعد از دستور
15 01 * * * aria2c -c -j1 -x16 -s16 -k 1M -d /home/kubuntu/Downloads -i /home/kubuntu/Desktop/Link.txt -l downloadlog --log-level=notice > logdownloadaria2c &&کد رو بنویسم؟
یا کد رو جایی ذخیره کنم و اونجا دستور به اجرای اون کد بدم؟
چجوریه؟
من تا حالا نه اسکریپت نوشتم، نه اسکریپت لود کردم

فقط شده بعضی اوقات یه دستور رو مثلا اینجوری لود کردم
با رفتن به دایرکتوری و زدن
./ sh (مثلا)
عنوان: پاسخ : دستور شرطی واسه آریا2
ارسال شده توسط: M!lad در 22 دی 1393، 02:31 ب‌ظ
اینجوری باید کار کنه، اونجا که نوشتم aria2c دستور aria2 مورد نظر خودت رو بزار، دانلود که تموم شد، میاد نگاه میکنه اگر لینکی برای دانلود تو لیست دانلودهات بود سیستم رو خاموش میکنه. اگر لینکی تو لیست نبود یا با # شروع می‌شدن هم که کاری نمیکنه.
import os

os.system("aria2c ...")

f = open('./dl', 'r')
for line in f:
        if line[0] != '#':
                os.system("shutdown -h now")

برا اجراش هم تو کرون باید بزنی:
echo "password" | sudo python ./address/script.py
درنتیجه اون دستور aria2c‌ کرون دیگه لازم نیست و بجاش از اجرای این اسکریپت استفاده میکنی.
عنوان: پاسخ : دستور شرطی واسه آریا2
ارسال شده توسط: رسول سعیدنژاد در 22 دی 1393، 02:40 ب‌ظ
خیلی ممنون. واقعا دستتون درد نکنه.  ;)
عنوان: پاسخ : دستور شرطی واسه آریا2
ارسال شده توسط: رسول سعیدنژاد در 22 دی 1393، 02:45 ب‌ظ
یعنی فایل پایتون اینجوری میشه در کل؟

import os

os.system("aria2c -c -j1 -x16 -s16 -k 1M -d /home/kubuntu/Downloads -i /home/kubuntu/Desktop/Link.txt -l downloadlog --log-level=notice > logdownloadaria2c")

f = open('./home/kubuntu/Desktop/Link.txt', 'r')
for line in f:
        if line[0] != '#':
                os.system("shutdown -h now")
عنوان: پاسخ : دستور شرطی واسه آریا2
ارسال شده توسط: رسول سعیدنژاد در 22 دی 1393، 03:11 ب‌ظ
اون ./ ها باعث شدن فایل اررور بده.
اونارو پاک کردم. اینجوری شد

import os

os.system("aria2c -c -j1 -x16 -s16 -k 1M -d /home/kubuntu/Downloads -i /home/kubuntu/Desktop/Link.txt -l downloadlog --log-level=notice > logdownloadaria2c")

f = open('/home/kubuntu/Desktop/Link.txt', 'r')
for line in f:
        if line[0] != '#':
                os.system("shutdown -h now")

بعد ذخیره ش کردم توی دایرکتوری هوم:
/home/kubuntu/Aria2c.python.py

بعد هم توی کرون تب دادم دستور رو:

58 14 * * * echo "my password" | sudo -S python /home/kubuntu/Aria2c.python.py > logpy.txt
پس این دستور به کلی قانونش اینه که:
نگاه می کنه ببینه آیا لینکی توی فایل txt هست یا نه. اگه باشه خب دانلود می کنه و بعد از دانلود خاموش
اگه هم نباشه دیگه کاری انجام نمیده تا زمانی که دستورات بعدی کرون (مثلا سطر های بعد که زمان مشخص دیگه ای دارن) اجرا بشن.

درسته؟

خب یه سوال؟
نمیشه جوری دستور داد که ما اون دوتا دستور آریا2 و شات داون رو توی کرون داشته باشیم، ولی با پایتون اسکریپتی بنویسیم که مثلا اگه لینکی توی فایل تکست بود، اون سطر کرون رو اجرا کنه. یعنی آریا2 و شات داون رو اجرا کنه. و اگه لینکی نبود اون سطر رو اجرا نکنه.
یعنی
15 01 * * * aria2c -c -j1 -x16 -s16 -k 1M -d /home/kubuntu/Downloads -i /home/kubuntu/Desktop/Link.txt -l downloadlog --log-level=notice > logdownloadaria2c && echo "my password" | sudo -S shutdown -h nowاین سر جاش باشه. ولی قبل از دستور آریا2 یه دستور داده بشه که زمانی این سطر اجرا بشه توی کرون که لینکی در فایل تکست باشه.

میشه همچین چیزی اصن؟؟؟  ;)
عنوان: پاسخ : دستور شرطی واسه آریا2
ارسال شده توسط: رسول سعیدنژاد در 22 دی 1393، 03:23 ب‌ظ
یه سوال دیگه؟
حالا فرض کنین این اسکریپت اجرا شد، (تست کردم و به خوبی اجرا شد. دمتون گرم)
خب وسط کار ممکنه نخوام دیگه دانلود کنم. چجوری میشه جلوی اسکریپت رو گرفت؟ دستورش واسه کنسل کردن اسکریپت چیه؟
عنوان: پاسخ : دستور شرطی واسه آریا2
ارسال شده توسط: M!lad در 22 دی 1393، 05:12 ب‌ظ
درباره نقطه (./دات)، اشاره داره به همین دایرکتوری: dl/. یعنی همین دایرکتوری که اسکریپت از توش اجرا شده. پس اگر بخواید آدرس مستقل بدید نباید بزاریدش همونطور که خودتون متوجه شدید و حذفش کردید.

عملکرد اسکریپت هم به این صورت هست:
aria2 رو برای دانلود اجرا میکنه و دانلود ها انجام می‌شن،‌ بعد از اتمام دانلود میره مرحله بعدی. تو مرحله بعد لیست دانلود رو چک میکنه تا ببینه لینکی برا دانلود وجود داشته یا نه!‌ لینک هایی که با # شروع میشند هم در نظر نمیگیره. اگر لینکی نبود سیستم روشن می‌مونه و اگر هیچ لینکی نبود یا# داشتن سیستم رو خاموش میکنه.

من زیاد از Cron استفاده نمیکنم ولی منطقا Cron اجرای برنامه و... رو کنترل میکنه.
برا اینکه بشه یک پروسه که cron اجرا کرده رو متوقف کرد میشه لیست پروسه‌ها رو چک کنیم و id پروسه مدنظرمون رو پیدا و Kill کنمیش، مثل:

ps -e | grep 'aria2c'
یک خروجی مثل این داره:

2345 ?        00:00:00 aria2c
که میشه با kill -s 2345 یا pkill aria2c پروسه رو متوقف کرد.

من اسکریپت رو با بش هم نوشتم:
#!/bin/bash

cd ~/Downloads

aria2c -i ./dl -c

flag=0

while read line
do
if [ ${line:0:1} != "#" ]; then
    flag=1
fi
done < ./dl

if [ $flag == 0 ]; then
        exit
fi

(
for i in `seq 1 100`;
do
echo $i; sleep .2
done
) |

zenity --progress \
  --title="Shutdown..." \
  --text="Do you want to cancel the shutdown operation?" \
  --percentage=0 \
  --auto-close \
  --display=:0.0

if [ "$?" != 1 ] ; then
shutdown -h now
fi

مثل قبل، دانلود انجام میشه، لیست چک میشه،‌ اگر محتوی لینک بود سیستم میره برا خاموش شدن، ولی اینبار بهتون ۲۰ ثانیه اجازه میده پروسه رو کنسل کنید!

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

عنوان: پاسخ : دستور شرطی واسه آریا2
ارسال شده توسط: رسول سعیدنژاد در 22 دی 1393، 05:20 ب‌ظ
نقل‌قول
و اگر هیچ لینکی نبود یا# داشتن سیستم رو خاموش میکنه.
لینکی بود یا نبود؟
اگه لینکی باشه باید خاموش کنه
اگه نباشه که نباید خاموش بشه. درسته؟
و اگه هم # داشته باشه هم باز نباید خاموش بشه. درسته؟

خب من امشب مثلا سه تا لینک توی فایل دارم. آریا2 دانلود رو شروع می کنه و تموم میشه. بعد اسکریپت فایل رو تکست رو چک می کنه اگه لینکی بود، خاموشش کنه. اگه لینکی نبود، خاموش نکنه. درسته؟

نقل‌قول
برا اینکه بشه یک پروسه که cron اجرا کرده رو متوقف کرد میشه لیست پروسه‌ها رو چک کنیم و id پروسه مدنظرمون رو پیدا و Kill کنمیش، مثل:
آره دستور pkill رو میدونم. توی همون کرون هم تنظیم شده. ولی اسکریپت مگه توش عمل خاموش شدن نداره؟ خب اگه من آریا2 رو کیل کنم، سیستم نمیره واسه خاموشی؟؟ یا کلا اسکریپت از کار می افته اون موقع؟

نقل‌قول
من اسکریپت رو با بش هم نوشتم:
نقل‌قول
مثل قبل، دانلود انجام میشه، لیست چک میشه،‌ اگر محتوی لینک بود سیستم میره برا خاموش شدن، ولی اینبار بهتون ۲۰ ثانیه اجازه میده پروسه رو کنسل کنید!

فرضا دارید با سیستم کار میکنید و دانلودهاتون تموم میشه و عملا سیستم باید خاموش بشه ولی بهتون اجازه میده عملیات رو کنسل کنید:
اینم خیلی عالیه. دمتون گرم.
فقط یه سوال؟ این رو باید با چه پسوندی خروجی بگیرم و با چه دستوری توی کرون اجراش کنم؟  ;)
عنوان: پاسخ : دستور شرطی واسه آریا2
ارسال شده توسط: رسول سعیدنژاد در 22 دی 1393، 05:39 ب‌ظ
خب پس میشه کار رو ساده تر کرد
بیاییم کلا این کار رو انجام بدیم
دستور آریا2 رو دست نزنیم. بذاریم چه لینک داشته باشه چه نداشته باشه اجرا بشه و تموم بشه
بعد واسه خاموش شدن سیستم (که بعد از && گذاشتم) دستور دیالوگ بدیم.

1) اگه سیستم لینک داشته باشه واسه دانلود خب میگیره و بعد هم دیالوگ خاموش شدن میاد و بعدش هم میره و سیستم خاموش میشه (منم خواب!  ;D)

2) اگه سیستم لینک نداشته باشه واسه دانلود خب آریا2 سریع تموم میشه میره واسه خاموش شدن و من دیالوگ رو میبینم و کنسل می کنم.

اینجوری ساده تر نیست؟؟
کلا عمل چک کردن اون فایل تکست دیگه از توی اسکریپت برداشته میشه.
فقط دیالوگ واسه شات داون لازمه.  ;)
عنوان: پاسخ : دستور شرطی واسه آریا2
ارسال شده توسط: KraToS در 22 دی 1393، 05:43 ب‌ظ
خب پس میشه کار رو ساده تر کرد
بیاییم کلا این کار رو انجام بدیم
دستور آریا2 رو دست نزنیم. بذاریم چه لینک داشته باشه چه نداشته باشه اجرا بشه و تموم بشه
بعد واسه خاموش شدن سیستم (که بعد از && گذاشتم) دستور دیالوگ بدیم.

1) اگه سیستم لینک داشته باشه واسه دانلود خب میگیره و بعد هم دیالوگ خاموش شدن میاد و بعدش هم میره و سیستم خاموش میشه (منم خواب!  ;D)

2) اگه سیستم لینک نداشته باشه واسه دانلود خب آریا2 سریع تموم میشه میره واسه خاموش شدن و من دیالوگ رو میبینم و کنسل می کنم.

اینجوری ساده تر نیست؟؟
کلا عمل چک کردن اون فایل تکست دیگه از توی اسکریپت برداشته میشه.
فقط دیالوگ واسه شات داون لازمه.  ;)

ساده ترین معادله همینه که قبل از دستور خاموش شدن سیستم هشدار بگیری ٫ فکر کن ساعت ۳ دانلود تموم شد و شما در حال وبگردی بودی نزنه یهویی مات و مبهوتت کنه
عنوان: پاسخ : دستور شرطی واسه آریا2
ارسال شده توسط: رسول سعیدنژاد در 22 دی 1393، 05:46 ب‌ظ
نقل‌قول
ساده ترین معادله همینه که قبل از دستور خاموش شدن سیستم هشدار بگیری ٫ فکر کن ساعت ۳ دانلود تموم شد و شما در حال وبگردی بودی نزنه یهویی مات و مبهوتت کنه
دقیقا. واسه همین این سوال رو مطرح کردم.
1) اون اسکریپت پایتون خیلی خوبه و وقتی تستش کردم راضی بودم. فقط سوال برام ایجاد شده بود که چجوری کل اسکپریت رو بعد از فعال شدن کنسل کنم. که هم دانلود قطع بشه هم دستور خاموشی کلا لغو بشه. یعنی کلا یه دستور بدم که اسکپریت انگار نه انگار که وجود داشته  ;)

2) اسکریپت Bash هم خیلی خوبه ولی وقتی میلاد جان دیالوگ رو گذاشت داخلش این فکر به ذهنم خورد که چرا اینقدر کار رو سخت کنیم و بیاییم به جاش فقط برای شات داون یه دیالوگ بذاریم. دیگه چک کردن فایل تکست و ... نیاز نباشه  ;)
عنوان: پاسخ : دستور شرطی واسه آریا2
ارسال شده توسط: KraToS در 22 دی 1393، 05:51 ب‌ظ
والا من تو اسکریپت نویسی هیچی بلد نیستم ٫ همین آریا۲ رو هم نصب نکردم هنوز و نمیدونم حتی اسکریپت رو چجوری باید بدم به کرون تو ubuntu تازه کارم ٫ تحت وب امری داشتی تو پی اچ پی و ... نوکرتم هستم ٫‌ایشالا آقا M!lad وقت میکنه درستش کنه که استفاده کنیم ازش
عنوان: پاسخ : دستور شرطی واسه آریا2
ارسال شده توسط: رسول سعیدنژاد در 22 دی 1393، 05:54 ب‌ظ
والا من تو اسکریپت نویسی هیچی بلد نیستم ٫ همین آریا۲ رو هم نصب نکردم هنوز و نمیدونم حتی اسکریپت رو چجوری باید بدم به کرون تو تازه کارم ٫ تحت وب امری داشتی تو پی اچ پی و ... نوکرتم هستم ٫‌ایشالا آقا M!lad وقت میکنه درستش کنه که استفاده کنیم ازش

منم هنوز هیچی از اسکریپت نویسی نمی دونم. (نه پایتون بلدم نه Bash) خخخ
تا اینجا هم میلاد جان خیلی لطف کردن و وقت گذاشتن واسه ی این سوال من. اجرشون با خدا  ;)
آریا2 نرم افزاری چالش بر انگیزه. حتما تستش کن. چیزای زیادی به خاطرش یاد میگیری. نه مثل اون IDM  :D که نمی فهمی دقیقا داره چه کاری انجام میده.  ;)
باشه. اگه تحت وب سوالی بود مزاحمت میشم  ;)
آره خیلی خوبه. اگه توی ویکی نباشه، بهتره بذارنش توی wiki تا بقیه هم استفاده کنن  ;)
عنوان: پاسخ : دستور شرطی واسه آریا2
ارسال شده توسط: M!lad در 22 دی 1393، 05:58 ب‌ظ
درسته، تو توضیحاتم برعکس نوشتم، (چون از نظر خودم منطقا وقتی لینکی نیست باید سیستم خاموش بشه ;D)
اگر لینکی وجود داشت خاموش میکنه. (اجازه کنسل کردن هم میده) اگر نبود یا لینک ها # داشتن خاموش نمیشه سیستم.

۳ خط تو فایل کرون داشتید:
- یکیش aria2 بود که به جاش یک اسکریپت گذاشتیم که aria2 رو اجرا کنه پس از اتمام کار به صورت هوشمند تصمیم بگیره همون لحظه سیستم خاموش بشه یا نه
- دو تا هم برای kill کردن و خاموش کردن سیستم ساعت ۶:۳۵ دقیقه. (اگر اسکریپت سیستم رو خاموش نکرده باشه این دو در زمان مشخص شده اجرا میشند و سیستم خاموش میشه)

الان دقیق نمیدونم میخواید چه کنید! به نظر همه چیز درسته.

برای اجرا پسوند مهم نیست، باید مجوز اجرا شدن داشته باشه و در Crontab:
55 17 * * * bash /home/user/script > /home/user/log
بش اسکریپت رو یکم تغییر دادم که صحیح اجرا بشه...
عنوان: پاسخ : دستور شرطی واسه آریا2
ارسال شده توسط: رسول سعیدنژاد در 22 دی 1393، 06:06 ب‌ظ
نقل‌قول
درسته، تو توضیحاتم برعکس نوشتم، (چون از نظر خودم منطقا وقتی لینکی نیست باید سیستم خاموش بشه ;D)
اگر لینکی وجود داشت خاموش میکنه. اگر نبود یا لینک ها # داشتن خاموش نمیشه سیستم.

درسته  ;)

نقل‌قول
خط تو فایل کرون داشتید:
- یکیش aria2 بود که به جاش یک اسکریپت گذاشتیم که aria2 رو اجرا کنه پس از اتمام کار به صورت هوشمند تصمیم بگیره همون لحظه سیستم خاموش بشه یا نه
- دو تا هم برای kill کردن و خاموش کردن سیستم ساعت ۶:۳۵ دقیقه. (اگر اسکریپت سیستم رو خاموش نکرده باشه این دو در زمان مشخص شده اجرا میشند و سیستم خاموش میشه)

الان دقیق نمیدونم میخواید چه کنید! به نظر همه چیز درسته.

درسته. ولی منظور من یه چیز دیگه س.
من میگم اگه اسکریپت رو نخوام که دیگه به کارش ادامه بده برای لغوش باید چی بزنم؟
اگه pkill aria2c رو بزنم اسکریپت لغو میشه کلا؟ یا اینکه ممکنه بعد از لغو atia2c سیستم رو خاموش کنه؟ (اسکریپت پایتون منظورمه. نه بش. چون توی بش که اخطار میده) چون توی اسکریپت پایتون از خاموش شدن بحث شده بالاخره. (بعد از تمام شدن کار آریا)

نقل‌قول
برای اجرا پسوند مهم نیست، باید مجوز اجرا شدن داشته باشه و در Crontab:

خب این bash رو من کجا باید ذخیره کنم؟‌ یعنی بش رو که توی ترمینال نوشتم، خودش محل ذخیره به کاربر نشون میده؟ که ما با اسم دلخواهمون اسکریپت رو ذخیره کنیم؟
یا مثل پایتون بذارمش توی فایل تکست و بعد هر جایی که گذاشتم توی کرون آدرس دهیش کنم. اینجوری؟

اون قسمت ساده تر کردن کار هم منظورم اینه که کلا ما بیاییم یه اسکریپت درست کنیم واسه دیالوگ شات داون. همین! بعد بذاریمش بعد از دستور آریا2. مثلا:
15 01 * * * aria2c -c -j1 -x16 -s16 -k 1M -d /home/kubuntu/Downloads -i /home/kubuntu/Desktop/Link.txt -l downloadlog --log-level=notice > logdownloadaria2c && bash /home/user/script > /home/user/logبه طور مثال گفتم.
یعنی آریا2 کارش رو انجام بده. بعد دستور شات داون اجرا بشه ولی به صورت دیالوگ.
اینجوری دیگه چه لینک باشه چه نباشه موقع شات داون دیالوگ بهمون میده و خودمون انتخاب می کنیم.
اینجوری دیگه اسکریپت نیاز نیست اینقدر پیچیده بشه.  ;)

عنوان: پاسخ : دستور شرطی واسه آریا2
ارسال شده توسط: رسول سعیدنژاد در 22 دی 1393، 06:13 ب‌ظ
نقل‌قول
خب این bash رو من کجا باید ذخیره کنم؟‌ یعنی بش رو که توی ترمینال نوشتم، خودش محل ذخیره به کاربر نشون میده؟ که ما با اسم دلخواهمون اسکریپت رو ذخیره کنیم؟
یا مثل پایتون بذارمش توی فایل تکست و بعد هر جایی که گذاشتم توی کرون آدرس دهیش کنم. اینجوری؟

این قسمت حل شد  ;D چقدر من خنگم آخه  ](*,)
عنوان: پاسخ : دستور شرطی واسه آریا2
ارسال شده توسط: M!lad در 22 دی 1393، 06:29 ب‌ظ
کلا از ابتدا متوجه نشدم دلیلتون برای چک کردن لینک‌ها چی هست.
درباره اسکریپت پایتون میتونید با pkill python کل اسکریپت رو از اجرا متوقف کنید. بهتره با id اینکار رو انجام بدید.

کد اسکریپت (بش) رو تو یک فایل به هر اسم و جایی که دوست دارید ذخیره کنید. بعد بهش مجوز اجرا بدید:
chmod +x /path/to/scriptهمونطور که گفتم در لیست crontab قرارش بدید برای اجرا.
ضمنا باید بسته zenity رو هم نصب کنید تا بتونید پیغام ها رو ببینید.

اگر فقط بخشی از اسکریپت رو میخواید که کار خاموش کردن رو با پیغام دادن انجام بده:

#! /bin/bash
(
for i in `seq 1 100`;
do
echo $i; sleep .2
done
) |

zenity --progress \
  --title="Shutdown..." \
  --text="Do you want to cancel the shutdown operation?" \
  --percentage=0 \
  --auto-close \
  --display=:0.0

if [ "$?" != 1 ] ; then
shutdown -h now
fi

به این شکل تو لیست job ها بزارید:
00 00 * * * aria2c -i ~/Downloads/list -c ... && echo 'password' | sudo bash ~/Downloads/sd
من اسکریپت رو با اسم sd تو دایرکتوری Downloads ذخیره کرده‌ام.
وسط کار aria2 رو kill کنید پروسه خاموش شدن هم کنسل میشه.
عنوان: پاسخ : دستور شرطی واسه آریا2
ارسال شده توسط: رسول سعیدنژاد در 22 دی 1393، 06:37 ب‌ظ
نقل‌قول
کلا از ابتدا متوجه نشدم دلیلتون برای چک کردن لینک‌ها چی هست.
چک کردن لینک ها از اونجایی به ذهنم خطور کرد، که دیگه ایده ای واسه ی این کار نداشتم
تا اینکه قضیه ی دیالوگ بوجود اومد.

البته اسکریپت هاتون خیلی مفیدن و همیشه قابل استفاده ان. یعنی مشکلی بابت استفاده شون ندارم. مخصوصا هر دو اسکریپت که قبلا گذاشتین.  ;)

فقط می خواستم کاری کنم که سیستم وقتی آریا2 لینکی واسه دانلود نداره، خاموش نشه. همین!

ولی بعد که دیالوگ رو دیدم گفتم خب یه دیالوگ میذاریم واسه شات داون و دیگه این همه مصیبت نمیخواد.

نقل‌قول
درباره اسکریپت پایتون میتونید با pkill python کل اسکریپت رو از اجرا متوقف کنید. بهتره با id اینکار رو انجام بدید.
چشم  ;)

نقل‌قول
همونطور که گفتم در لیست crontab قرارش بدید برای اجرا.
ضمنا باید بسته zenity رو هم نصب کنید تا بتونید پیغام ها رو ببینید.
اینم به روی چشم  ;)

نقل‌قول
اگر فقط بخشی از اسکریپت رو میخواید که کار خاموش کردن رو با پیغام دادن انجام بده:
نقل‌قول
00 00 * * * aria2c -i ~/Downloads/list -c ... && echo 'password' | sudo bash ~/Downloads/sd
توی آخرین بحث دقیقا منظورم همین بود  ;)
به نظرم اینجوری بهتره تا اینکه بخواهیم کل آریا2 و خاموش شدن رو بسپاریم به دست اسکریپت (دیگه هم نیازی به نگرانی بابت pkill کردن نیست)
 ;)

در آخر خیلی ممنون که با حوصله جواب دادین و دانشتون رو به دیگران هم یاد دادین  ;)
ایشالله که خنگ بازی در نمیارم ولی اگه مشکلی پیش اومد دوباره مزاحمتون میشم  :oops: