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

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

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




نویسنده موضوع: مشکل اجرا شدن برخی دستورات در Crontab حل شد!  (دفعات بازدید: 2562 بار)

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

آفلاین رسول سعیدنژاد

  • High Hero Member
  • *
  • ارسال: 3483
  • جنسیت : پسر
  • علی (ع): زَكَاةُ الْعِلْمِ نَشْرُه
سلام دوستان. بازم با یک سوال راجب به 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 ران بشه و به طبع سینک بشه؟؟
یعنی در حالت کلی برنامه کاملا بسته هست. با دستوری میخوام ران بشه.

مرسی خیلی ممنون مچکر  ;)
« آخرین ویرایش: 03 بهمن 1393، 04:31 ب‌ظ توسط Rasubuntu »
نرم افزار، یک ابزاره. برای رسیدن به هدف ازش استفاده کنید. نرم افزار هدف شما نیست :)

آفلاین sajjad93

  • Sr. Member
  • *
  • ارسال: 294
پاسخ : مشکل اجرا شدن برخی دستورات در Crontab
« پاسخ #1 : 29 آذر 1393، 08:13 ب‌ظ »
سلام دوستان. بازم با یک سوال راجب به 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 می تونید برنامه های در حال اجرا رو ببینید.

آفلاین رسول سعیدنژاد

  • High Hero Member
  • *
  • ارسال: 3483
  • جنسیت : پسر
  • علی (ع): زَكَاةُ الْعِلْمِ نَشْرُه
پاسخ : مشکل اجرا شدن برخی دستورات در Crontab
« پاسخ #2 : 29 آذر 1393، 08:15 ب‌ظ »
عه عه!
راست میگینا.
من برای شات داون کردن از آپشن S- استفاده می کنم. ولی برای این دستور جدیدی پاک یادم رفته بود.  ](*,)
دمتون گرم که یادم انداختین.  ;)
مرسی. تست می کنم خبر قطعیش رو میدم.
نرم افزار، یک ابزاره. برای رسیدن به هدف ازش استفاده کنید. نرم افزار هدف شما نیست :)

آفلاین رسول سعیدنژاد

  • High Hero Member
  • *
  • ارسال: 3483
  • جنسیت : پسر
  • علی (ع): زَكَاةُ الْعِلْمِ نَشْرُه
پاسخ : مشکل اجرا شدن برخی دستورات در Crontab
« پاسخ #3 : 29 آذر 1393، 08:40 ب‌ظ »
تست کردم بازم نشد
یعنی دستورات
35 20 * * * echo "my password" | sudo -S megasync
یا

37 20 * * * echo "my password" | sudo -S megasync >/dev/pts/8
اتفاقی نمی افته. با اینکه وقتی دستورات رو توی ترمینال میزنم میاد بالا. یعنی همین دستور اول رو که توی ترمینال بدون کرون میزنم لود میشه. ولی توی کرون نمیشه.
برای چی؟؟
نرم افزار، یک ابزاره. برای رسیدن به هدف ازش استفاده کنید. نرم افزار هدف شما نیست :)

آفلاین رسول سعیدنژاد

  • High Hero Member
  • *
  • ارسال: 3483
  • جنسیت : پسر
  • علی (ع): زَكَاةُ الْعِلْمِ نَشْرُه
پاسخ : مشکل اجرا شدن برخی دستورات در Crontab
« پاسخ #4 : 29 آذر 1393، 09:22 ب‌ظ »
خیلی جالبه واقعا

الان اینو میزنم تو ترمینال فایرفاکس لود میشه:

echo "my password" | sudo -S firefox
ولی همین رو که میذارم توی کرون تب دیگه باز نمیشه

09 21 * * * echo "my password" | sudo -S firefox
پس باید برای باز کردن اینجور برنامه ها از یه دستور دیگه استفاده کرد

مثلا

20 21 * * * env DISPLAY=:0 /usr/bin/firefox
این باز میشه توی کرون تب ولی جای فایرفاکس اگه بنویسم megasync دوباره باز نمیشه.  ](*,)
نرم افزار، یک ابزاره. برای رسیدن به هدف ازش استفاده کنید. نرم افزار هدف شما نیست :)

آفلاین sajjad93

  • Sr. Member
  • *
  • ارسال: 294

آفلاین رسول سعیدنژاد

  • High Hero Member
  • *
  • ارسال: 3483
  • جنسیت : پسر
  • علی (ع): زَكَاةُ الْعِلْمِ نَشْرُه
پاسخ : مشکل اجرا شدن برخی دستورات در Crontab
« پاسخ #6 : 29 آذر 1393، 10:54 ب‌ظ »
اینو نگاه کن:
http://bricolage.io/ubuntu-tutorial-how-to-launch-an-gui-from-cron-i/

اینم مثل همون
env DISPLAY=:0 /usr/bin/firefoxعمل می کنه. برای فایرفاکس یا جی ادیت و ... جواب میده. ولی بازم برای مگا اتفاقی نمی افته.
از اونجایی که هم فایرفاکس و جی ادیت و هم مگاسینک توی همین پوشه ی usr/bin هستن پس منطقا باید مگاسینک هم با این دستور بیاد. ولی نمیاد.
نرم افزار، یک ابزاره. برای رسیدن به هدف ازش استفاده کنید. نرم افزار هدف شما نیست :)