انجمنهای فارسی اوبونتو
کمک و پشتیبانی => راهنماها، نکات و ترفندها => نویسنده: رسول سعیدنژاد در 29 آذر 1393، 03:21 بظ
-
سلام دوستان. بازم با یک سوال راجب به Crontab در خدمت شما هستم (از سرمم زیاده ;D)
من برای آریا2 از کرون تب استفاده می کنم و مشکلی هم ندارم.
ولی دیشب میخواستم یه فایل 2 گیگی رو با MEGA! بگیرم. خب مگا هر وقت فعال باشه شروع به سینک می کنه. منم محدودم و شب از ساعت 2 به بعد باید دانلود کنم. بیدار هم نیستم تا اون موقع تا سینکش رو بزنم.
میخواستم برنامه رو بدم توی کرون تب تا خودش بازش کنه و اجراش کنه. ولی خیلی جالبه. هر دستوری رو که میزنم بعد از زمان مشخص اجرا نمیشه.
اینم دستورات مختلفی که برای مگا استفاده می کنم.
به طور مثال (در کرون تب)
20 10 * * * echo "My Password" | sudo megasync
سودو مگاسینک رو میزنم خیلی راحت توی ترمینال لود میشه. ولی توی کرون تب که میزنم نمیشه. اون قسمت echo my password هم دقیقا همون دستوریه که مثلا واسه ی شات داون شدن سیستم میدم و بدون مشکلی سیستم خاموش میشه. پس اشکال از دستور نیست.
20 10 * * * env DISPLAY=:0 /usr/bin/megasync
اینم باز اتفاقی نمی افته. با اینکه اگه مثلا جای مگاسینک بذارم gedit راحت بازش می کنه. رفتم توی پوشه بین و مگاسینک رو هم دیدم. دقیقا همونجا بود! دقیقا هم به اسم megasync ولی بازم لود نمیشه
20 10 * * * echo "My Password" | sudo megasync >/dev/pts/5
که دستور رو باید توی ترمینال جاری من لود کنه، ولی بازم نمیشه. مثلا فایرفاکس رو جای مگاسینک بذارم میادا. ولی این مگاسینک نمیاد.
جالبه که دستورات ترمینالی مگاسینک هر کدوم رو که بزنم جواب میدن. ولی توی کرون تب که میذارم دیگه جواب نمیده. ولی باقی برنامه ریزی های کرون تب خیلی راحت سر زمان مشخص انجام میشن.
کسی میدونه چجوری باید این مگاسینک رو با کرون تب تنظیم کرد که بشه بعد از ساعت مثلا 2:30 ران بشه و به طبع سینک بشه؟؟
یعنی در حالت کلی برنامه کاملا بسته هست. با دستوری میخوام ران بشه.
مرسی خیلی ممنون مچکر ;)
-
سلام دوستان. بازم با یک سوال راجب به Crontab در خدمت شما هستم (از سرمم زیاده ;D)
من برای آریا2 از کرون تب استفاده می کنم و مشکلی هم ندارم.
ولی دیشب میخواستم یه فایل 2 گیگی رو با MEGA! بگیرم. خب مگا هر وقت فعال باشه شروع به سینک می کنه. منم محدودم و شب از ساعت 2 به بعد باید دانلود کنم. بیدار هم نیستم تا اون موقع تا سینکش رو بزنم.
میخواستم برنامه رو بدم توی کرون تب تا خودش بازش کنه و اجراش کنه. ولی خیلی جالبه. هر دستوری رو که میزنم بعد از زمان مشخص اجرا نمیشه.
اینم دستورات مختلفی که برای مگا استفاده می کنم.
به طور مثال (در کرون تب)
20 10 * * * echo "My Password" | sudo megasync
سودو مگاسینک رو میزنم خیلی راحت توی ترمینال لود میشه. ولی توی کرون تب که میزنم نمیشه. اون قسمت echo my password هم دقیقا همون دستوریه که مثلا واسه ی شات داون شدن سیستم میدم و بدون مشکلی سیستم خاموش میشه. پس اشکال از دستور نیست.
20 10 * * * env DISPLAY=:0 /usr/bin/megasync
اینم باز اتفاقی نمی افته. با اینکه اگه مثلا جای مگاسینک بذارم gedit راحت بازش می کنه. رفتم توی پوشه بین و مگاسینک رو هم دیدم. دقیقا همونجا بود! دقیقا هم به اسم megasync ولی بازم لود نمیشه
20 10 * * * echo "My Password" | sudo megasync >/dev/pts/5
که دستور رو باید توی ترمینال جاری من لود کنه، ولی بازم نمیشه. مثلا فایرفاکس رو جای مگاسینک بذارم میادا. ولی این مگاسینک نمیاد.
جالبه که دستورات ترمینالی مگاسینک هر کدوم رو که بزنم جواب میدن. ولی توی کرون تب که میذارم دیگه جواب نمیده. ولی باقی برنامه ریزی های کرون تب خیلی راحت سر زمان مشخص انجام میشن.
کسی میدونه چجوری باید این مگاسینک رو با کرون تب تنظیم کرد که بشه بعد از ساعت مثلا 2:30 ران بشه و به طبع سینک بشه؟؟
یعنی در حالت کلی برنامه کاملا بسته هست. با دستوری میخوام ران بشه.
مرسی خیلی ممنون مچکر ;)
دستوراتت یه مشکل داره باید از آپشن -S (اس بزرگ) توی دستور sudo استفاده کنید تا بتونه پسوردتون رو از echo بگیره مثلا:
echo "MyPass" | sudo -S apt-get update
و این که کرون تب کارها رو تو پشت زمینه انجام میده که با دستور top می تونید برنامه های در حال اجرا رو ببینید.
-
عه عه!
راست میگینا.
من برای شات داون کردن از آپشن S- استفاده می کنم. ولی برای این دستور جدیدی پاک یادم رفته بود. ](*,)
دمتون گرم که یادم انداختین. ;)
مرسی. تست می کنم خبر قطعیش رو میدم.
-
تست کردم بازم نشد
یعنی دستورات
35 20 * * * echo "my password" | sudo -S megasync
یا
37 20 * * * echo "my password" | sudo -S megasync >/dev/pts/8
اتفاقی نمی افته. با اینکه وقتی دستورات رو توی ترمینال میزنم میاد بالا. یعنی همین دستور اول رو که توی ترمینال بدون کرون میزنم لود میشه. ولی توی کرون نمیشه.
برای چی؟؟
-
خیلی جالبه واقعا
الان اینو میزنم تو ترمینال فایرفاکس لود میشه:
echo "my password" | sudo -S firefox
ولی همین رو که میذارم توی کرون تب دیگه باز نمیشه
09 21 * * * echo "my password" | sudo -S firefox
پس باید برای باز کردن اینجور برنامه ها از یه دستور دیگه استفاده کرد
مثلا
20 21 * * * env DISPLAY=:0 /usr/bin/firefox
این باز میشه توی کرون تب ولی جای فایرفاکس اگه بنویسم megasync دوباره باز نمیشه. ](*,)
-
اینو نگاه کن:
http://bricolage.io/ubuntu-tutorial-how-to-launch-an-gui-from-cron-i/
-
اینو نگاه کن:
http://bricolage.io/ubuntu-tutorial-how-to-launch-an-gui-from-cron-i/
اینم مثل همون
env DISPLAY=:0 /usr/bin/firefox
عمل می کنه. برای فایرفاکس یا جی ادیت و ... جواب میده. ولی بازم برای مگا اتفاقی نمی افته.
از اونجایی که هم فایرفاکس و جی ادیت و هم مگاسینک توی همین پوشه ی usr/bin هستن پس منطقا باید مگاسینک هم با این دستور بیاد. ولی نمیاد.