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

کمک و پشتیبانی => راهنماها، نکات و ترفندها => نویسنده: سید وحید رضا برهانی در 01 خرداد 1390، 09:03 ب‌ظ

عنوان: خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: سید وحید رضا برهانی در 01 خرداد 1390، 09:03 ب‌ظ
سلام
بعضی وقتها(در واقع خیلی اتفاق می افته برای من)که یک برنامه رو اجرا می کنید بعد از چند دقیقه می بینید که یک کاری پیش می یاد که مجبورید برید ومعلوم نیست که کار این برنامه چقدر طول می کشه و نمی تونید که با ساعت تنظیم کرد که کامپیوتر خاموش بشه یا مواردی دیگر ! به طور کلی وقتی که معلوم نیست که کار یک برنامه کی تموم می شه من برای حل این مسئله اومدم این اسکریپت رو نوشتم
www.negarsoft.persiangig.ir/afterfinish2اینطوری استفاده می شه
./afterfinish2 pogrammenameبرای خاموش کردن به طور پیش فرض نیاز به  دسترسی هست که به همین خاطر ازتون پسورد می خواد (این پسورد جایی ذخیره نمی شه) و توجه کنید که پسورد یک بار ازتون پرسیده می شه و نمایش هم نمی ده ! پس دقت کنید منتها می تونید به طرق دیگر پسورد رو به برنامه داد
نکته: این برنامه فقط برنامه هایی که با حساب کاربری شما اجرا شده باشد رو می تونه مانیتور کنه پس اگر که با sudo بخواهید اجراش کنید و بخواهید که برنامه ای که با حساب شما اجرا شده رو مانیتور کنه کار نمی کنه
به خاطر اینکه از خاموش شدن اتفاقی جلوگیری بشه قبلش اون برنامه رو سرچ می کنه که اگر اجرا بود مانیتور بشه و اگر اجرا نبود با چاپ پیامی! از برنامه خارج می شه
عنوان: پاسخ به: خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: سهراب ابوالفتحی در 01 خرداد 1390، 11:55 ب‌ظ
میشه لطف کنید خط به خط اسکریپت رو توضیح بدید
عنوان: پاسخ به: خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: Aref.Ariyapour در 02 خرداد 1390، 01:43 ق‌ظ
آقا رضا عزیز یه سوال
ببینید به نظرتون این قسمت :
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 مانور بدیم.
قربان شما
موفق باشید
عنوان: پاسخ به: خاموش کردن بعد از اتمام کار یک برنام
ارسال شده توسط: سید وحید رضا برهانی در 02 خرداد 1390، 04:44 ق‌ظ
[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
عنوان: پاسخ به: خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: Aref.Ariyapour در 02 خرداد 1390، 08:48 ق‌ظ
آقا رضا شرمنده، یه چیز تابلویی رو من متوجه نشده بودم، که الان درست دیدم، متوجه شدم. من اصلا حواسم نبود که این Script نام برنامه مورد نظر رو به عنوان argument میگیره. بعد اونجا که $1 رو به grep فرستادید من اشتباها فکر کردم که standard output رو به null فرستاده بودید که صفحه شلوغ نشه، در صورتی که $1 همون نام برنامه مورد نظر هستش که به grep فرستاده شده. پس یه تیکه از اون پستم که گفتم، Script وایمیسه تا همه برنامه ها تموم شن اشتباهه.(ببخشید بی دقتی شد  ](*,) :D)
در هر صورت رضا جان دستت درد نکنه.
موفق باشید
عنوان: پاسخ به: خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: سید وحید رضا برهانی در 02 خرداد 1390، 10:49 ق‌ظ
خواهش می کنم
آدم با اشتباه کردن جیز بیشتری  یاد می گیره!
به امید مفید بودن
عنوان: پاسخ به: خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: ssaeidd در 02 خرداد 1390، 10:59 ق‌ظ
چرا این همه خودتون رو اذیت میکنید . برنامه Gshutdown رو از center‌نصب کنید همین کارو میکنه
عنوان: پاسخ به: خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: b_gholamali در 02 خرداد 1390، 11:40 ق‌ظ
چرا این همه خودتون رو اذیت میکنید . برنامه Gshutdown رو از center‌نصب کنید همین کارو میکنه
و البته sentinella هم هست که خیلی کامله
اما بهرحال استفاده از اسکریپت سید یه حال دیگه‌ای داره  ;)
عنوان: پاسخ به: خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: سید وحید رضا برهانی در 02 خرداد 1390، 02:39 ب‌ظ
چرا این همه خودتون رو اذیت میکنید . برنامه Gshutdown رو از center‌نصب کنید همین کارو میکنه
سوال جالبی بود !
اولش که من نمی دونستم برای همچین کاری نرم افزار هم هست! ولی به طور کلی اینکه آدم بتونه یک کار رو خودش انجام بده چندتا مزیت داره : ۱- مهمترینش اینکه آ دم در این حین کلی چیز یاد می گیره و یکجوری تمرین هست برای اسکریپت نویسی و برنامه نویسی ویه طور کلی اینکه یه کامپیوتر نشون بدی رئیس کیه؟! ۲- دومین مزیت اینکه آدم می دونه چجوری کار می کنه (جدا از مسئله اعتماد-که در اینجا مطرح نیست) باعث می شه که اگر لازم شد به بهترین شکل ممکن برای خودم ویرایش کنم ویا با سایر چیزهای دیگه ترکیبش کنم ۳-مهمترین مزیتش اینکه آدم وقتی یک چیزی (جدا از کوچکی یا بزرگی)درست می کنه (یا سرهم می کنه) کلی ذوق می کنه ! و انرژی مثبت و این حرفها
عنوان: پاسخ : خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: کیان در 28 دی 1391، 08:24 ب‌ظ
من برای حل این مسئله اومدم این اسکریپت رو نوشتم
www.negarsoft.persiangig.ir/afterfinish2
لینک خرابه!
عنوان: پاسخ : خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: tazekar در 29 دی 1391، 10:32 ب‌ظ
من پست های تاپیک رو نخوندم و نمیدونم جریان چیه (خوابم میاد میخوام برم بخوابم :o) این شاید به درد بخوره:
first && secondبه جای first دستور اولی و به جای second دستور دوم که میخواهید اجرا بشه رو قرار بدید. دستور اول رو اجرا میکنه و تا وقتی که اون دستور تموم بشه یا پنجره اش بسته بشه صبر میکنه و بعد دستور دوم رو اجرا میکنه. میشه دستورات بیشتری هم بهش اضافه کرد.

نکته: اگر به جای && از & استفاده کنید تمام دستورات هم زمان اجرا خواهند شد
عنوان: پاسخ : خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: Iman17 در 23 اردیبهشت 1392، 09:24 ق‌ظ
لینک دانلود اسکریپت خراب شده.
لطفا تصحیح کنید.
عنوان: پاسخ : خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: سید وحید رضا برهانی در 23 اردیبهشت 1392، 10:09 ق‌ظ
سلام
http://negarsoft.persiangig.com/afterfinish2خوشحالم که هنوزم کسی هست که بخواهد امتحانش کنه
مثل همیشه به امید مفید بودن و نه به تضمین آن .
عنوان: پاسخ : پاسخ به: خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: MrAli در 23 اردیبهشت 1392، 10:35 ق‌ظ
چرا این همه خودتون رو اذیت میکنید . برنامه Gshutdown رو از center‌نصب کنید همین کارو میکنه
و البته sentinella هم هست که خیلی کامله
اما بهرحال استفاده از اسکریپت سید یه حال دیگه‌ای داره  ;)
یعنی Gshutdown و sentinella رو میشه تنظیم کرد که با پایان یک برنامه خاص سیستم رو خاموش کنن؟ من الان از qshutdown استفاده می کنم که خیلی عالیه اما فقط قابلیت های زمانی رو داره و نمیشه بهش گفت بعد از پایان x سیستم رو خاموش/ریستارت/خواب کن.
عنوان: پاسخ : خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: Iman17 در 28 اردیبهشت 1392، 10:03 ب‌ظ
سلام
http://negarsoft.persiangig.com/afterfinish2خوشحالم که هنوزم کسی هست که بخواهد امتحانش کنه
مثل همیشه به امید مفید بودن و نه به تضمین آن .
اولا سپاس بابت لینک
من کاری که کردم این بود که متنی که توی لینک بود رو توی یه فایل .sh ریختم و تا حدی هم درست کار می کنه.
یعنی بعد از این که نرم افزار بسته میشه سیستمم میره روی حالت خاموش شدن ولی روی لوگوی فدورا (من فدورا دارم :دی) گیر می کنه و خاموش نمیشه. جالب بود esc هم زدم که فرایند هایی که بسته شدن رو ببینم ولی کلا لپتاپ هنگ میکنه و مجبور شدم به فشار فیزیکی روی بیارم.
مشکل کجاست؟
عنوان: پاسخ : خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: سید وحید رضا برهانی در 28 اردیبهشت 1392، 11:58 ب‌ظ
راستش مشکل نمی شه گفت ولی تازگی ها (چندین ماهه) که نمی دونم کدوم سیستم تغییر کرده که بین halt و poweroff تفاوت قائل می شه (البته قاعدتا باید از اول اینطوری می بود :ي )... halt می یاد نرم افزارها و سیستم عامل رو می بنده ولی انگار برق کامپیوتر رو قطع نمی کنه ولی poweroff هم برنامه ها رو مبنده و هم برق رو قطع می کنه (اسمش روشه دیگه !) و خب چون این اسکریپت قدیمی هست و قدیما بین این دوتا فرقی نبود من از halt  استفاده کردم خلاصه ... برای حلش فقط کافیه جایی که نوشته halt  رو با poweroff جایگزین کنی (خط اخر اسکریپت)
عنوان: پاسخ : خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: کیان در 29 اردیبهشت 1392، 12:58 ب‌ظ
@وحید
کدت رو بذار در سایت گیت هاب که هر کی خواست استفاده کنه از اونجا برداره: هم پایداره و هم آخرین تغییرات رو داره :)
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 چیزی پیدا نکرد یا مشکلی پیش اومد از حلقه خارج می شه و کامپیوتر رو خاموش می کنه
# قرار نیست که این صبر کنه تا همه ی برنامه تموم بشن (خیلی از برنامه ها هستند که تا زمانی که سیستم خاموش نشده در حال اجرا هستند )بلکه برای اپن برنامه ای رو که ما می دیم صبر می کنه
عنوان: پاسخ : خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: سید وحید رضا برهانی در 29 اردیبهشت 1392، 07:12 ب‌ظ
سلام
git چیز باحالیه ولی اونوقت باید کلی بنویسی که چجوری با گیت کار کنند !
درمورد fribidiهم به خاطر فارسی سازیش نوشتم و هم برای اینکه نشون بدم همچین برنامه ای هست و برای فارسی نوشتن در خط فرمان چیکار باید کرد(این اسکریپت بیشتر آموزشی و به اشتراک گذاشتن ایده هست )
عنوان: پاسخ : خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: کیان در 30 اردیبهشت 1392، 10:36 ق‌ظ
git چیز باحالیه ولی اونوقت باید کلی بنویسی که چجوری با گیت کار کنند !
استفاده از گیت برای میزبانی کد منظورم بود! استفاده کننده فقط لازمه لینک دانلود فایل زیپ شده گیت هاب در اختیارش باشه! لازم نیست با گیت کار کنه  ;)
عنوان: پاسخ : خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: Iman17 در 30 اردیبهشت 1392، 12:19 ب‌ظ
این اسکریپت فقط وقتی برنامه بسته بشه سیستم رو خاموش می کنه درسته؟
یعنی نمیشه طوری تنظیمش کرد که وقتی مثلا دانلود تموم شد (مثلا با نرم افزار prozgui) سیستم رو خاموش کنه؟
عنوان: پاسخ : خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: سید وحید رضا برهانی در 30 اردیبهشت 1392، 01:36 ب‌ظ
این اسکریپت فقط وقتی برنامه بسته بشه سیستم رو خاموش می کنه درسته؟
یعنی نمیشه طوری تنظیمش کرد که وقتی مثلا دانلود تموم شد (مثلا با نرم افزار prozgui) سیستم رو خاموش کنه؟
من تا حالا با prozgui کار نکردم نمی دونم چجوریه ولی خب اگر که بشه که prozgui رو تنظیم کرد که وقتی دانلود تموم بشه خارج بشه (اکثر دانلود منیجر ها همچین امکانی رو دارند یعنی لااقل Kget و Ktorrent دارند) خب این اسکریپت می تونه مفید باشه ولی خب اگر که همچین امکانی رو نداره می شه یک اسکریپت دیگه نوشت که حجم فایل دانلودی رو هر چند ثانیه یک بار اندازه بگیره و وقتی که حجمش ثابت شد ! یا به اندازه ی مناسب رسید و یا هر راه دیگری ! از اسکریپت خارج بشه بعد اون وقت این اسکریپت می تونه کامپیوتر رو خاموش کنه ... کلا کلک «رشتی» های زیادی می شه زد ! :D

git چیز باحالیه ولی اونوقت باید کلی بنویسی که چجوری با گیت کار کنند !
استفاده از گیت برای میزبانی کد منظورم بود! استفاده کننده فقط لازمه لینک دانلود فایل زیپ شده گیت هاب در اختیارش باشه! لازم نیست با گیت کار کنه  ;)
آره می زارمش ... با حال می شه :)
ویرایش : گذاشتم :)
https://github.com/vahid-borhani/afterfinish/archive/master.zip
عنوان: پاسخ : خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: Iman17 در 30 اردیبهشت 1392، 07:59 ب‌ظ
این اسکریپت فقط وقتی برنامه بسته بشه سیستم رو خاموش می کنه درسته؟
یعنی نمیشه طوری تنظیمش کرد که وقتی مثلا دانلود تموم شد (مثلا با نرم افزار prozgui) سیستم رو خاموش کنه؟
من تا حالا با prozgui کار نکردم نمی دونم چجوریه ولی خب اگر که بشه که prozgui رو تنظیم کرد که وقتی دانلود تموم بشه خارج بشه (اکثر دانلود منیجر ها همچین امکانی رو دارند یعنی لااقل Kget و Ktorrent دارند) خب این اسکریپت می تونه مفید باشه ولی خب اگر که همچین امکانی رو نداره می شه یک اسکریپت دیگه نوشت که حجم فایل دانلودی رو هر چند ثانیه یک بار اندازه بگیره و وقتی که حجمش ثابت شد ! یا به اندازه ی مناسب رسید و یا هر راه دیگری ! از اسکریپت خارج بشه بعد اون وقت این اسکریپت می تونه کامپیوتر رو خاموش کنه ... کلا کلک «رشتی» های زیادی می شه زد ! :D

git چیز باحالیه ولی اونوقت باید کلی بنویسی که چجوری با گیت کار کنند !
استفاده از گیت برای میزبانی کد منظورم بود! استفاده کننده فقط لازمه لینک دانلود فایل زیپ شده گیت هاب در اختیارش باشه! لازم نیست با گیت کار کنه  ;)
آره می زارمش ... با حال می شه :)
ویرایش : گذاشتم :)
https://github.com/vahid-borhani/afterfinish/archive/master.zip
آخه من که اسکریپت نویسی بلد نیستم، وقت یادگیریش رو هم ندارم :دی
اگه نرم افزاری هست که این کار رو بکنه ممنون میشم اون رو بگید.
عنوان: پاسخ : خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: سید وحید رضا برهانی در 30 اردیبهشت 1392، 08:21 ب‌ظ
البته این موضوع مربوط به این اسکریپت نمی شه (وطبعا در بک تاپیک دیگه باید بررسی بشه)ولی خب دقیقتر بگو که از چه نرم افزاری استفاده می کنی یا اینکه از چه نرم افزارهایی می تونی استفاده کنی (مثلا از Kget چرا استفاده نمی کنی ؟ یا افزونه downthemall فایرفاکس و...) متاسفانه فردا می رم مسافرت ولی اگر که تونستم امشب برات یک چیزی می نویسنم
عنوان: پاسخ : خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: Iman17 در 30 اردیبهشت 1392، 09:04 ب‌ظ
البته این موضوع مربوط به این اسکریپت نمی شه (وطبعا در بک تاپیک دیگه باید بررسی بشه)ولی خب دقیقتر بگو که از چه نرم افزاری استفاده می کنی یا اینکه از چه نرم افزارهایی می تونی استفاده کنی (مثلا از Kget چرا استفاده نمی کنی ؟ یا افزونه downthemall فایرفاکس و...) متاسفانه فردا می رم مسافرت ولی اگر که تونستم امشب برات یک چیزی می نویسنم
ای بابا اسباب زحمت شدیم...شرمنده.
اگه فرصت ندارید مهم نیست حالا تو یه فرصت دیگه.
من تو برداشتی که از دانلودر ها داشتم به نظرم سرعت دانلود Prozgui از بقیه بهتر بود. Prozgui همون پوسته ی گرافیکی دار prozilla هست.
http://prozgui.sourceforge.net/
بازم سپاس
عنوان: پاسخ : خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: سید وحید رضا برهانی در 30 اردیبهشت 1392، 09:28 ب‌ظ
سلام
ببین این بدردت می خوره (کار می کنه ! :) )
اسم این رو گذاشتم 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 اول دانلود می کنند بعد منتقل می کنند هم راهی هست (چک کردن موجود شدن ! فایل) که خیلی کم من اینطوری دیدم ولی اگر که دانلود منیجرت  اینطوری بود بگو که عوضش کنم :)
عنوان: پاسخ : خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: Iman17 در 31 اردیبهشت 1392، 02:35 ق‌ظ
بعد این چه جوری به یک دانلودر گرافیکی وصل میشه؟  ;D
عنوان: پاسخ : خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: سید وحید رضا برهانی در 31 اردیبهشت 1392، 04:48 ق‌ظ
نیازی به وصل شدن نیست ! ما فقط نیاز داریم بدونیم که کی دانلود تموم می شه و چون وقتی که یک دانلود تموم می شه دانلود منیجر دیگه با اون فایل کاری نداره پس فایل هم تغییری نمی کنه و خب ما هم باید این تغییر کردن رو مانیتور کنیم و ادامه ماجرا...
عنوان: پاسخ : خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: آرمان اسماعیلی در 31 اردیبهشت 1392، 09:59 ق‌ظ
نیازی به وصل شدن نیست ! ما فقط نیاز داریم بدونیم که کی دانلود تموم می شه و چون وقتی که یک دانلود تموم می شه دانلود منیجر دیگه با اون فایل کاری نداره پس فایل هم تغییری نمی کنه و خب ما هم باید این تغییر کردن رو مانیتور کنیم و ادامه ماجرا...

ایده‌ی خوبیه. اما دانلودری مثل آریا به طور پیشفرض کل حجم فایل رو روی هارد رزرو می‌کنه. مثل تورنت. برای این شرایط چکار کنیم؟
داخل پرانتز اینکه خود آریا سوییچ on-download-completion- رو داره.

ویرایش: می‌شه زمان modify شدن فایل رو در نظر گرفت :)
عنوان: پاسخ : خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: سید وحید رضا برهانی در 31 اردیبهشت 1392، 12:55 ب‌ظ
آره ولی اگر که به کد نگاه کنی می بینی که منم از خروجی stat -c %z استفاده کردم (۴-۵ تا پست آخر رو بخون)که زمان آخرین تغییر فایل رو مقایسه می کنه (البته md5  رو هم می شه در نظر گرفت ولی چون md5  از یک فایل چند گیگی اونم در بازه ی زمانی کوتاه خیلی روی سیستم فشار می یاره ازش استفاده نکردم )
عنوان: پاسخ : خاموش کردن بعد از اتمام کار یک برنامه
ارسال شده توسط: Iman17 در 04 خرداد 1392، 01:28 ب‌ظ
نیازی به وصل شدن نیست ! ما فقط نیاز داریم بدونیم که کی دانلود تموم می شه و چون وقتی که یک دانلود تموم می شه دانلود منیجر دیگه با اون فایل کاری نداره پس فایل هم تغییری نمی کنه و خب ما هم باید این تغییر کردن رو مانیتور کنیم و ادامه ماجرا...
خیلی ممنون دستتون درد نکنه من فقط یه جایی رو قاطی می کردم. الان حل شد.
بازم سپاس.