انجمنهای فارسی اوبونتو
کمک و پشتیبانی => راهنماها، نکات و ترفندها => نویسنده: سید وحید رضا برهانی در 01 خرداد 1390، 09:03 بظ
-
سلام
بعضی وقتها(در واقع خیلی اتفاق می افته برای من)که یک برنامه رو اجرا می کنید بعد از چند دقیقه می بینید که یک کاری پیش می یاد که مجبورید برید ومعلوم نیست که کار این برنامه چقدر طول می کشه و نمی تونید که با ساعت تنظیم کرد که کامپیوتر خاموش بشه یا مواردی دیگر ! به طور کلی وقتی که معلوم نیست که کار یک برنامه کی تموم می شه من برای حل این مسئله اومدم این اسکریپت رو نوشتم
www.negarsoft.persiangig.ir/afterfinish2
اینطوری استفاده می شه
./afterfinish2 pogrammename
برای خاموش کردن به طور پیش فرض نیاز به دسترسی هست که به همین خاطر ازتون پسورد می خواد (این پسورد جایی ذخیره نمی شه) و توجه کنید که پسورد یک بار ازتون پرسیده می شه و نمایش هم نمی ده ! پس دقت کنید منتها می تونید به طرق دیگر پسورد رو به برنامه داد
نکته: این برنامه فقط برنامه هایی که با حساب کاربری شما اجرا شده باشد رو می تونه مانیتور کنه پس اگر که با sudo بخواهید اجراش کنید و بخواهید که برنامه ای که با حساب شما اجرا شده رو مانیتور کنه کار نمی کنه
به خاطر اینکه از خاموش شدن اتفاقی جلوگیری بشه قبلش اون برنامه رو سرچ می کنه که اگر اجرا بود مانیتور بشه و اگر اجرا نبود با چاپ پیامی! از برنامه خارج می شه
-
میشه لطف کنید خط به خط اسکریپت رو توضیح بدید
-
آقا رضا عزیز یه سوال
ببینید به نظرتون این قسمت :
ps -u `whoami` |grep -i $1 >/dev/null
مشکل نداره. من این خط رو اجرا میکنم error میده. ببینید شما چیزی رو به فرمان grep ندادید و بعد خواستید که standard output رو بریزید تو null.
کلا شما این طور عمل کردید که ببینید آیا برنامه ای واسه این کاربر باز هست یا نه ، اگر باز بود دوباره بررسی میکنه و زمانی که همه پروسس ها بسته شدن، سیستم رو خاموش میکنه.
آقا رضا تو این while که شما گفتید
while [ $exe != '1' ]
منظورتون این بوده که تا زمانی که فرمان ps ... درست اجرا شده، و پروسه ای درحال اجرا هست، این حلقه ادامه پیدا کنه. درسته.
حالا بعضی وقت ها که یه دستور ناموفق میشه همیشه خروجیش ۱ نمیشه و ممکنه ۲ هم بشه. به نظر من بهتره که بنویسید:
while [ $exe =='0' ]
باز اگه در مورد اون خط :
ps -u `whoami` |grep $1 >/dev/null
توضیح بدید ممنون میشم. تو سیستم من که error میداد.
در ضمن به نظر من واسه این کاری که شما گفتید، این طور مناسب نیستش که ببینیم همه پروسه های کاربر جاری تموم شده و بعد سیستم رو خاموش کنیم. شاید یه پروسس ای رو یه کاربر اجرا کرده که تا ابد تموم نمیشه. به نظر من این طور بهتر بود که نام برنامه از کاربر گرفته بشه، بعد ما بریم pid رو پیدا کنیم و بعد رو این pid مانور بدیم.
قربان شما
موفق باشید
-
[code]سلام
خب لازم شد که فنی تر ! کد رو بررسی کنیم
قسمت اول
[code]echo پسورد کاربری خود را وارد کنید |fribidi
read -s pass
echo اجرا شدم |fribidi
این قسمت که خب کار خاصی انجام نمی ده فقط یک متن فارسی رو چاپ می کنه (چون خط فرمان قابلیت نمایش صحیح حروف فارسی رو نداره این خروجی رو با fribidi انجام می دهند) بعد پسورد رو از کاربر می گیره ودر متغیر pass ذخیره می کنه (-s باعثت می شه که چیزی رو که کاربر تایپ می کنه روی صفحه نمایش نشان داده نشه-بنا به دلایل امنیتی)
قسمت دوم
ps -u `whoami` |grep -i $1 >/dev/null
if [ $? != '0' ]
then
echo no programme running!...
exit
fi
خب این قسمت برای اینکه از خاموش شدن بی مورد جلوگیری کنه
ببینید به نظرتون این قسمت :
ps -u `whoami` |grep -i $1 >/dev/null
مشکل نداره. من این خط رو اجرا میکنم error میده. ببینید شما چیزی رو به فرمان grep ندادید و بعد خواستید که standard output رو بریزید تو null.
کلا شما این طور عمل کردید که ببینید آیا برنامه ای واسه این کاربر باز هست یا نه ، اگر باز بود دوباره بررسی میکنه و زمانی که همه پروسس ها بسته شدن، سیستم رو خاموش میکن
اینکه شما خطا در یافت می کنید به احتمال زیاد مربوط به این می شه که این کد رو خارج از اسکریپت اجرا کردید چیزی رو که ما به grep می دیم همون چیزیه که کاربر به ما می ده ! به متغیر $1 در فرمان توجه کنید
اما توضیحش :
ps یک نرم افزاری که پروسس ها رو نشون می ده
whoamiنرم افزاریه که می گه شما (اجرا کننده )نام کاربریش چیه
``
زوج علامت بالا به این معنیه که هر چیزی که بینشان باشه اجرا می شه و خروجیشون بجای این زوج علامت و عبارت درونشون قرار می گیره
ps -u `whoami`
خب این می یاد تمام برنامه هایی رو که کاربری رو که اجراش کرده رو لیست می کنه
ps -u `whoami |grep -i $1 >/dev/null
این خط می یاد تمام برنامه رو می فرسته (با | ) به grep -i grep هم دنبال می گرده ببینه که همچین عبارتی توی لیست برنامه ها هست یا نه که خب اگر باشه به طور پیش فرض چاپش می کنه ولی چون صفحه شلوغ می شد فرستادمش به نا کجا آباد !(/dev/null ) اگر که همچین چیزی وجود داشت متغیر ? (این متغیر خروجی رو که برنامه به صدا زنندش می فرسته توی c همون return ; هست )برابر صفر می شه و اگر که این عبارت نبود یا مشکلی پیش اومد (خیلی کم پیش می یاد که مشکلی رخ بدهد -یعنی من که تا حالا زیاد ندیدم) مخالف صفر میشه که بستگی به این چه حالتی باشه فرق می کنه
اما اون ساختار شرطی بررسی می کنه که ببینه آیا متغیر ? صفر هست یا نه ؟ (چون بلافاصله بعد از خط بالا قرار داره می شه مطمئن شد که وضعیت grep رو مشخص می کنه - چون بعد از اجرای هر دستور مقدارش تغییر می کنه) اگر که مخالف صفر بود یعنی این برنامه وجود نداره یا اینکه اشکالی وجود داره!که در این صورت از اسکریپت خارج می شه
قسمت سوم:
exe=0
while [ $exe != '1' ]
do
ps -u `whoami` |grep $1 >/dev/null
exe=$?
sleep 2
done
خط اول می یاد متغیر exeرو برابر صفر قرار می ده بعد میره توی حلقه ی while توی این حلقه ابتدا دستور قسمت دوم اجرا می شه بعد چون یک برنامه ی دیگه هم هست و مقدار $? تغییر می کنه اومدم مقدار exe رو برابر ? قرار دادم و مبنای مقایسه رو هم برپایه ی exe گذاشتم بعد از خط بالا ۲ثانیه صبر می کنه چون هم از میزان پردازش حلقه کم بشه و هم اینکه اگر داشت اسکریپتی رو مانیتور می کرد فرصت کافی برای رفتن به خط بعد باشه وهم اینکه سریع خاموش نشه ! و فرصت کنسل هم داشته باشه بعد از این دوثانیه دو باره حلقه از اول چک می شه
قسمت آخر t
[/code]echo $pass |sudo -S halt[/code]
حال اگر که grep چیزی پیدا نکرد یا مشکلی پیش اومد از حلقه خارج می شه و کامپیوتر رو خاموش می کنه
منظورتون این بوده که تا زمانی که فرمان ps ... درست اجرا شده، و پروسه ای درحال اجرا هست، این حلقه ادامه پیدا کنه. درسته.
حالا بعضی وقت ها که یه دستور ناموفق میشه همیشه خروجیش ۱ نمیشه و ممکنه ۲ هم بشه. به نظر من بهتره که بنویسید:
بله با صفر بهتره ولی نمی دونم چرا این مدلی نوشتم (این کد مال چند ماه پیشه)یعنی تغیییرش دادم به مخالف با یک ولی الان که فکر می کنم می بینم خیلی بهتره که با صفر مقایسه بشه ممنون
ر ضمن به نظر من واسه این کاری که شما گفتید، این طور مناسب نیستش که ببینیم همه پروسه های کاربر جاری تموم شده و بعد سیستم رو خاموش کنیم. شاید یه پروسس ای رو یه کاربر اجرا کرده که تا ابد تموم نمیشه. به نظر من این طور بهتر بود که نام برنامه از کاربر گرفته بشه، بعد ما بریم pid رو پیدا کنیم و بعد رو این pid مانور بدیم.
احتمالا یک جاییش رو متوجه نشدید قرار نیست که این صبر کنه تا همه ی برنامه تموم بشن (خیلی از برنامه ها هستند که تا زمانی که سیستم خاموش نشده در حال اجرا هستند )بلکه برای اپن برنامه ای رو که ما می دیم صبر می کنه اما ایده ی pid ایده ی خوبیه چون با استفاده از نام برنامه ها ممکنه که تداخل بوجود بیاد مثلا dd با thdd (هر چند که توی برنامه های با اسم بزرگتر کمتر پیش می یاد )ولی pid این مشکل رو نداره در عوض pid این مشکل رو داره (به همبن خاطر من اسم رو به pid ترجیح دادم-هر کسی با کامپیوترش یک جوری کار می کنه) که توی اسکریپتهایی که توی خط فرمان نوشته میشه ویک برنامه چندین بار اجرا می شه و به اتمام می رسه pid فرق می کنه و با عث که یا یک بار اجرا خاموش بشه و به دفعات بعدی نرسه برای pid هم این خط رو به اول اضافه کنید
pid=`pidof $1`
وخطوط شامل
ps -u `whoami`|grep -i $1 >/dev/null
به ابن خط تبدیل کنید
ps -u `whoami` |awk '{print $1}' |grep $pid >/dev/null
-
آقا رضا شرمنده، یه چیز تابلویی رو من متوجه نشده بودم، که الان درست دیدم، متوجه شدم. من اصلا حواسم نبود که این Script نام برنامه مورد نظر رو به عنوان argument میگیره. بعد اونجا که $1 رو به grep فرستادید من اشتباها فکر کردم که standard output رو به null فرستاده بودید که صفحه شلوغ نشه، در صورتی که $1 همون نام برنامه مورد نظر هستش که به grep فرستاده شده. پس یه تیکه از اون پستم که گفتم، Script وایمیسه تا همه برنامه ها تموم شن اشتباهه.(ببخشید بی دقتی شد ](*,) :D)
در هر صورت رضا جان دستت درد نکنه.
موفق باشید
-
خواهش می کنم
آدم با اشتباه کردن جیز بیشتری یاد می گیره!
به امید مفید بودن
-
چرا این همه خودتون رو اذیت میکنید . برنامه Gshutdown رو از centerنصب کنید همین کارو میکنه
-
چرا این همه خودتون رو اذیت میکنید . برنامه Gshutdown رو از centerنصب کنید همین کارو میکنه
و البته sentinella هم هست که خیلی کامله
اما بهرحال استفاده از اسکریپت سید یه حال دیگهای داره ;)
-
چرا این همه خودتون رو اذیت میکنید . برنامه Gshutdown رو از centerنصب کنید همین کارو میکنه
سوال جالبی بود !
اولش که من نمی دونستم برای همچین کاری نرم افزار هم هست! ولی به طور کلی اینکه آدم بتونه یک کار رو خودش انجام بده چندتا مزیت داره : ۱- مهمترینش اینکه آ دم در این حین کلی چیز یاد می گیره و یکجوری تمرین هست برای اسکریپت نویسی و برنامه نویسی ویه طور کلی اینکه یه کامپیوتر نشون بدی رئیس کیه؟! ۲- دومین مزیت اینکه آدم می دونه چجوری کار می کنه (جدا از مسئله اعتماد-که در اینجا مطرح نیست) باعث می شه که اگر لازم شد به بهترین شکل ممکن برای خودم ویرایش کنم ویا با سایر چیزهای دیگه ترکیبش کنم ۳-مهمترین مزیتش اینکه آدم وقتی یک چیزی (جدا از کوچکی یا بزرگی)درست می کنه (یا سرهم می کنه) کلی ذوق می کنه ! و انرژی مثبت و این حرفها
-
من برای حل این مسئله اومدم این اسکریپت رو نوشتم
www.negarsoft.persiangig.ir/afterfinish2
لینک خرابه!
-
من پست های تاپیک رو نخوندم و نمیدونم جریان چیه (خوابم میاد میخوام برم بخوابم :o) این شاید به درد بخوره:
first && second
به جای first دستور اولی و به جای second دستور دوم که میخواهید اجرا بشه رو قرار بدید. دستور اول رو اجرا میکنه و تا وقتی که اون دستور تموم بشه یا پنجره اش بسته بشه صبر میکنه و بعد دستور دوم رو اجرا میکنه. میشه دستورات بیشتری هم بهش اضافه کرد.
نکته: اگر به جای && از & استفاده کنید تمام دستورات هم زمان اجرا خواهند شد
-
لینک دانلود اسکریپت خراب شده.
لطفا تصحیح کنید.
-
سلام
http://negarsoft.persiangig.com/afterfinish2
خوشحالم که هنوزم کسی هست که بخواهد امتحانش کنه
مثل همیشه به امید مفید بودن و نه به تضمین آن .
-
چرا این همه خودتون رو اذیت میکنید . برنامه Gshutdown رو از centerنصب کنید همین کارو میکنه
و البته sentinella هم هست که خیلی کامله
اما بهرحال استفاده از اسکریپت سید یه حال دیگهای داره ;)
یعنی Gshutdown و sentinella رو میشه تنظیم کرد که با پایان یک برنامه خاص سیستم رو خاموش کنن؟ من الان از qshutdown استفاده می کنم که خیلی عالیه اما فقط قابلیت های زمانی رو داره و نمیشه بهش گفت بعد از پایان x سیستم رو خاموش/ریستارت/خواب کن.
-
سلام
http://negarsoft.persiangig.com/afterfinish2
خوشحالم که هنوزم کسی هست که بخواهد امتحانش کنه
مثل همیشه به امید مفید بودن و نه به تضمین آن .
اولا سپاس بابت لینک
من کاری که کردم این بود که متنی که توی لینک بود رو توی یه فایل .sh ریختم و تا حدی هم درست کار می کنه.
یعنی بعد از این که نرم افزار بسته میشه سیستمم میره روی حالت خاموش شدن ولی روی لوگوی فدورا (من فدورا دارم :دی) گیر می کنه و خاموش نمیشه. جالب بود esc هم زدم که فرایند هایی که بسته شدن رو ببینم ولی کلا لپتاپ هنگ میکنه و مجبور شدم به فشار فیزیکی روی بیارم.
مشکل کجاست؟
-
راستش مشکل نمی شه گفت ولی تازگی ها (چندین ماهه) که نمی دونم کدوم سیستم تغییر کرده که بین halt و poweroff تفاوت قائل می شه (البته قاعدتا باید از اول اینطوری می بود :ي )... halt می یاد نرم افزارها و سیستم عامل رو می بنده ولی انگار برق کامپیوتر رو قطع نمی کنه ولی poweroff هم برنامه ها رو مبنده و هم برق رو قطع می کنه (اسمش روشه دیگه !) و خب چون این اسکریپت قدیمی هست و قدیما بین این دوتا فرقی نبود من از halt استفاده کردم خلاصه ... برای حلش فقط کافیه جایی که نوشته halt رو با poweroff جایگزین کنی (خط اخر اسکریپت)
-
@وحید
کدت رو بذار در سایت گیت هاب که هر کی خواست استفاده کنه از اونجا برداره: هم پایداره و هم آخرین تغییرات رو داره :)
fribidi به صورت پیش فرض نصب نیست. شاید بهتر باشه نباشه:
#This program can shut down your computer when another task is complete.
#Author: سید وحید رضا برهانی
#Contact: http://forum.ubuntu.ir/index.php?action=profile;u=1755
#Report bugs: http://forum.ubuntu.ir/index.php/topic,17897.0.html
#License: Unknown!
echo Enter your password, please
read -s pass
echo Done\!
ps -u `whoami` |grep -i $1 >/dev/null
if [ $? != '0' ]
then
echo Didn\'t find any program running\!
exit
fi
exe=0
while [ $exe != '1' ]
do
ps -u `whoami` |grep $1 >/dev/null
exe=$?
sleep 2
done
echo $pass |sudo -S poweroff
#
# .: راهنمای اسکریپت :. #
# بعضی وقتها که یک برنامه رو اجرا می کنید بعد از چند دقیقه می بینید که یک کاری پیش می یاد که مجبورید برید و معلوم نیست که کار این برنامه چقدر طول می کشه و نمی شه با ساعت تنظیم کرد که کامپیوتر خاموش بشه یا مواردی دیگر ! به طور کلی وقتی که معلوم نیست که کار یک برنامه کی تموم می شه این اسکریپت به کار میاد.
# اینطوری استفاده می شه:
#./afterfinish2 pogrammename
# برای خاموش کردن به طور پیش فرض نیاز به دسترسی هست که به همین خاطر ازتون پسورد می خواد (این پسورد جایی ذخیره نمی شه) و توجه کنید که پسورد یک بار ازتون پرسیده می شه و نمایش هم نمی ده ! پس دقت کنید منتها می تونید به طرق دیگر پسورد رو به برنامه داد
# نکته: این برنامه فقط برنامه هایی که با حساب کاربری شما اجرا شده باشد رو می تونه مانیتور کنه پس اگر که با sudo بخواهید اجراش کنید و بخواهید که برنامه ای که با حساب شما اجرا شده رو مانیتور کنه کار نمی کنه
# به خاطر اینکه از خاموش شدن اتفاقی جلوگیری بشه قبلش اون برنامه رو سرچ می کنه که اگر اجرا بود مانیتور بشه و اگر اجرا نبود با چاپ پیامی! از برنامه خارج می شه
#
# .: راهنمای کد :. #
# در read -s pass پسورد از کاربر گرفته می شه و در متغیر pass ذخیره می شه (-s باعث می شه که چیزی رو که کاربر تایپ می کنه روی صفحه نمایش نشان داده نشه-بنا به دلایل امنیتی)
# چون خط فرمان قابلیت نمایش صحیح حروف فارسی رو نداره این خروجی رو با fribidi انجام می دهند
# از ps اولی تا fi برای اینکه از خاموش شدن بی مورد جلوگیری کنه
# کد ps یک نرم افزاری که پروسس ها رو نشون می ده
# کد whoami نرم افزاریه که می گه شما (اجرا کننده )نام کاربریش چیه
# زوج علامت `` به این معنیه که هر چیزی که بینشان باشه اجرا می شه و خروجیشون بجای این زوج علامت و عبارت درونشون قرار می گیره
# دستور ps -u `whoami` می یاد تمام برنامه هایی رو که کاربری رو که اجراش کرده رو لیست می کنه
# خط ps -u `whoami |grep -i $1 >/dev/null می یاد تمام برنامه رو می فرسته (با | ) به grep -i grep هم دنبال می گرده ببینه که همچین عبارتی توی لیست برنامه ها هست یا نه که خب اگر باشه به طور پیش فرض چاپش می کنه ولی چون صفحه شلوغ می شد فرستادمش به نا کجا آباد: /dev/null
# اگر جواب دستور بالا مثبت بود، متغیر ? برابر صفر می شه (این متغیر خروجی رو که برنامه به صدا زنندش می فرسته توی c همون return ; هست ) و اگر که این عبارت نبود یا مشکلی پیش اومد (خیلی کم پیش می یاد که مشکلی رخ بدهد) مخالف صفر میشه که بستگی به این چه حالتی باشه فرق می کنه
# ساختار شرطی بررسی می کنه که ببینه آیا متغیر ? صفر هست یا نه ؟ (چون بلافاصله بعد از خط بالا قرار داره می شه مطمئن شد که وضعیت grep رو مشخص می کنه - چون بعد از اجرای هر دستور مقدارش تغییر می کنه) اگر که مخالف صفر بود یعنی این برنامه وجود نداره یا اینکه اشکالی وجود داره!که در این صورت از اسکریپت خارج می شه
# از exe=0 تا done: خط اول می یاد متغیر exeرو برابر صفر قرار می ده بعد میره توی حلقه ی while توی این حلقه ابتدا دستور قسمت دوم اجرا می شه بعد چون یک برنامه ی دیگه هم هست و مقدار $? تغییر می کنه اومدم مقدار exe رو برابر ? قرار دادم و مبنای مقایسه رو هم برپایه ی exe گذاشتم بعد از خط بالا ۲ثانیه صبر می کنه چون هم از میزان پردازش حلقه کم بشه و هم اینکه اگر داشت اسکریپتی رو مانیتور می کرد فرصت کافی برای رفتن به خط بعد باشه وهم اینکه سریع خاموش نشه ! و فرصت کنسل هم داشته باشه بعد از این دوثانیه دو باره حلقه از اول چک می شه
# چیزی رو که ما به grep می دیم همون چیزیه که کاربر به ما می ده ! به متغیر $1 در فرمان توجه کنید
# آحرین خط کد: حال اگر که grep چیزی پیدا نکرد یا مشکلی پیش اومد از حلقه خارج می شه و کامپیوتر رو خاموش می کنه
# قرار نیست که این صبر کنه تا همه ی برنامه تموم بشن (خیلی از برنامه ها هستند که تا زمانی که سیستم خاموش نشده در حال اجرا هستند )بلکه برای اپن برنامه ای رو که ما می دیم صبر می کنه
-
سلام
git چیز باحالیه ولی اونوقت باید کلی بنویسی که چجوری با گیت کار کنند !
درمورد fribidiهم به خاطر فارسی سازیش نوشتم و هم برای اینکه نشون بدم همچین برنامه ای هست و برای فارسی نوشتن در خط فرمان چیکار باید کرد(این اسکریپت بیشتر آموزشی و به اشتراک گذاشتن ایده هست )
-
git چیز باحالیه ولی اونوقت باید کلی بنویسی که چجوری با گیت کار کنند !
استفاده از گیت برای میزبانی کد منظورم بود! استفاده کننده فقط لازمه لینک دانلود فایل زیپ شده گیت هاب در اختیارش باشه! لازم نیست با گیت کار کنه ;)
-
این اسکریپت فقط وقتی برنامه بسته بشه سیستم رو خاموش می کنه درسته؟
یعنی نمیشه طوری تنظیمش کرد که وقتی مثلا دانلود تموم شد (مثلا با نرم افزار prozgui) سیستم رو خاموش کنه؟
-
این اسکریپت فقط وقتی برنامه بسته بشه سیستم رو خاموش می کنه درسته؟
یعنی نمیشه طوری تنظیمش کرد که وقتی مثلا دانلود تموم شد (مثلا با نرم افزار prozgui) سیستم رو خاموش کنه؟
من تا حالا با prozgui کار نکردم نمی دونم چجوریه ولی خب اگر که بشه که prozgui رو تنظیم کرد که وقتی دانلود تموم بشه خارج بشه (اکثر دانلود منیجر ها همچین امکانی رو دارند یعنی لااقل Kget و Ktorrent دارند) خب این اسکریپت می تونه مفید باشه ولی خب اگر که همچین امکانی رو نداره می شه یک اسکریپت دیگه نوشت که حجم فایل دانلودی رو هر چند ثانیه یک بار اندازه بگیره و وقتی که حجمش ثابت شد ! یا به اندازه ی مناسب رسید و یا هر راه دیگری ! از اسکریپت خارج بشه بعد اون وقت این اسکریپت می تونه کامپیوتر رو خاموش کنه ... کلا کلک «رشتی» های زیادی می شه زد ! :D
git چیز باحالیه ولی اونوقت باید کلی بنویسی که چجوری با گیت کار کنند !
استفاده از گیت برای میزبانی کد منظورم بود! استفاده کننده فقط لازمه لینک دانلود فایل زیپ شده گیت هاب در اختیارش باشه! لازم نیست با گیت کار کنه ;)
آره می زارمش ... با حال می شه :)
ویرایش : گذاشتم :)
https://github.com/vahid-borhani/afterfinish/archive/master.zip
-
این اسکریپت فقط وقتی برنامه بسته بشه سیستم رو خاموش می کنه درسته؟
یعنی نمیشه طوری تنظیمش کرد که وقتی مثلا دانلود تموم شد (مثلا با نرم افزار prozgui) سیستم رو خاموش کنه؟
من تا حالا با prozgui کار نکردم نمی دونم چجوریه ولی خب اگر که بشه که prozgui رو تنظیم کرد که وقتی دانلود تموم بشه خارج بشه (اکثر دانلود منیجر ها همچین امکانی رو دارند یعنی لااقل Kget و Ktorrent دارند) خب این اسکریپت می تونه مفید باشه ولی خب اگر که همچین امکانی رو نداره می شه یک اسکریپت دیگه نوشت که حجم فایل دانلودی رو هر چند ثانیه یک بار اندازه بگیره و وقتی که حجمش ثابت شد ! یا به اندازه ی مناسب رسید و یا هر راه دیگری ! از اسکریپت خارج بشه بعد اون وقت این اسکریپت می تونه کامپیوتر رو خاموش کنه ... کلا کلک «رشتی» های زیادی می شه زد ! :D
git چیز باحالیه ولی اونوقت باید کلی بنویسی که چجوری با گیت کار کنند !
استفاده از گیت برای میزبانی کد منظورم بود! استفاده کننده فقط لازمه لینک دانلود فایل زیپ شده گیت هاب در اختیارش باشه! لازم نیست با گیت کار کنه ;)
آره می زارمش ... با حال می شه :)
ویرایش : گذاشتم :)
https://github.com/vahid-borhani/afterfinish/archive/master.zip
آخه من که اسکریپت نویسی بلد نیستم، وقت یادگیریش رو هم ندارم :دی
اگه نرم افزاری هست که این کار رو بکنه ممنون میشم اون رو بگید.
-
البته این موضوع مربوط به این اسکریپت نمی شه (وطبعا در بک تاپیک دیگه باید بررسی بشه)ولی خب دقیقتر بگو که از چه نرم افزاری استفاده می کنی یا اینکه از چه نرم افزارهایی می تونی استفاده کنی (مثلا از Kget چرا استفاده نمی کنی ؟ یا افزونه downthemall فایرفاکس و...) متاسفانه فردا می رم مسافرت ولی اگر که تونستم امشب برات یک چیزی می نویسنم
-
البته این موضوع مربوط به این اسکریپت نمی شه (وطبعا در بک تاپیک دیگه باید بررسی بشه)ولی خب دقیقتر بگو که از چه نرم افزاری استفاده می کنی یا اینکه از چه نرم افزارهایی می تونی استفاده کنی (مثلا از Kget چرا استفاده نمی کنی ؟ یا افزونه downthemall فایرفاکس و...) متاسفانه فردا می رم مسافرت ولی اگر که تونستم امشب برات یک چیزی می نویسنم
ای بابا اسباب زحمت شدیم...شرمنده.
اگه فرصت ندارید مهم نیست حالا تو یه فرصت دیگه.
من تو برداشتی که از دانلودر ها داشتم به نظرم سرعت دانلود Prozgui از بقیه بهتر بود. Prozgui همون پوسته ی گرافیکی دار prozilla هست.
http://prozgui.sourceforge.net/
بازم سپاس
-
سلام
ببین این بدردت می خوره (کار می کنه ! :) )
اسم این رو گذاشتم after_download
# $1 : makan file $2: zaman lazem barye taghir
echo پسورد کاربری خود را وارد کنید |fribidi
read -s pass
echo اجرا شدم |fribidi
time_old=`stat -c %z $1`
time_new="nothing"
while [ "$time_old" != "$time_new" ]
do
time_old=`stat -c %z $1`
sleep $2
time_new=`stat -c %z $1`
done
echo $pass |sudo -S poweroff
کد رو کپی کن توی یک فایل بعد خاصیت اجرایی بهش بده و اینطوری استفاده کن
./after_download address-file time-wait
خب آدرس فایل آدرس همون فایلی هست که داره دانلود می شه (فایل باید موچود باشه و با دانلود تغییر کنه) و پارامتر بعدی time-wait هم زمان لازم برای تغییر کردن فایل هست که بنا به سرعت اینترنت یا سرور دانلود خودتون باید تنظیمش کنید (واحدشم ثانیه است ) در واقع اگر که در این زمان فایل تغییر نکنه به معنای اتمام دانلود برداشت می شه و کامپیوتر رو خاموش می کنه (الیته برای دانلود منیجر هایی که توی temp اول دانلود می کنند بعد منتقل می کنند هم راهی هست (چک کردن موجود شدن ! فایل) که خیلی کم من اینطوری دیدم ولی اگر که دانلود منیجرت اینطوری بود بگو که عوضش کنم :)
-
بعد این چه جوری به یک دانلودر گرافیکی وصل میشه؟ ;D
-
نیازی به وصل شدن نیست ! ما فقط نیاز داریم بدونیم که کی دانلود تموم می شه و چون وقتی که یک دانلود تموم می شه دانلود منیجر دیگه با اون فایل کاری نداره پس فایل هم تغییری نمی کنه و خب ما هم باید این تغییر کردن رو مانیتور کنیم و ادامه ماجرا...
-
نیازی به وصل شدن نیست ! ما فقط نیاز داریم بدونیم که کی دانلود تموم می شه و چون وقتی که یک دانلود تموم می شه دانلود منیجر دیگه با اون فایل کاری نداره پس فایل هم تغییری نمی کنه و خب ما هم باید این تغییر کردن رو مانیتور کنیم و ادامه ماجرا...
ایدهی خوبیه. اما دانلودری مثل آریا به طور پیشفرض کل حجم فایل رو روی هارد رزرو میکنه. مثل تورنت. برای این شرایط چکار کنیم؟
داخل پرانتز اینکه خود آریا سوییچ on-download-completion- رو داره.
ویرایش: میشه زمان modify شدن فایل رو در نظر گرفت :)
-
آره ولی اگر که به کد نگاه کنی می بینی که منم از خروجی stat -c %z استفاده کردم (۴-۵ تا پست آخر رو بخون)که زمان آخرین تغییر فایل رو مقایسه می کنه (البته md5 رو هم می شه در نظر گرفت ولی چون md5 از یک فایل چند گیگی اونم در بازه ی زمانی کوتاه خیلی روی سیستم فشار می یاره ازش استفاده نکردم )
-
نیازی به وصل شدن نیست ! ما فقط نیاز داریم بدونیم که کی دانلود تموم می شه و چون وقتی که یک دانلود تموم می شه دانلود منیجر دیگه با اون فایل کاری نداره پس فایل هم تغییری نمی کنه و خب ما هم باید این تغییر کردن رو مانیتور کنیم و ادامه ماجرا...
خیلی ممنون دستتون درد نکنه من فقط یه جایی رو قاطی می کردم. الان حل شد.
بازم سپاس.
+۱