انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: HSN6 در 25 امرداد 1392، 02:04 بظ
-
سلام به همگی
وقتی توی ترمینال cron رو میزنم ، این خطا رو میده :
cron: can't open or create /var/run/crond.pid: Permission denied
crontab هم برای اجرای اسکریپتهای پایتون کار نمیکنه.
مثلا همین چیزی که پیوست کردم. crony.py تنظیم میکنه crontab رو برای اجرای crotofy.py
وقتی وقتش میرسه ، هیچ اتفاقی نمیوفته.
ولی اگه یک اسکریپت پایتونی باشه که از ماژول pygame استفاده کرده باشه ؛ سر وقتش به جای اینکه مثل یک اسکریپت خوب اجرا بشه ، کلا tty7 رو میزنه غیرفعال میکنه و بعد میندازمون توی tty6 و بعد از چند ثانیه میشه برگشت به tty7 بدون هیچ اثری از اجرای اسکریپت.
-
مثل اینکه باید cron را با دسترسی ریشه اجرا کنید تا فایلش را بسازه
-
دستورتون رو با sudo اجرا کنید. اول دستورتون یه sudo بزنین.
-
خود cron رو که با sudo باز میکنم ، این خطا رو میده:
cron: can't lock /var/run/crond.pid, otherpid may be 882: Resource temporarily unavailable
هر کدوم از اون دوتا کدی هم که گذاشتم وقتی با sudo اجراشون میکنم باز هم هیچی نمیشه.
-
نیازی به اجرای دستی cron نیست. crontab هم مشکلی با اسکریپتهای Python نداره.
-
تو پوشه etc یه سری فایل هست اونها رو دستکاری کنید:
cron.d/ cron.daily/ cron.deny cron.hourly/ cron.monthly/ cron.weekly
-
تو پوشه etc یه سری فایل هست اونها رو دستکاری کنید:
cron.d/ cron.daily/ cron.deny cron.hourly/ cron.monthly/ cron.weekly
این محتویات رو دارند و من نفهمیدم باید دقیقا چیکار کنم:
cron.d:
anacron
cron.daily:
0anacron dpkg mlocate standard
apport google-talkplugin ntp update-notifier-common
apt logrotate passwd
bsdmainutils man-db popularity-contest
cron.hourly:
cron.monthly:
0anacron
cron.weekly:
0anacron man-db tor
میشه اون مثالی که پیوست کرده بودند رو اجرا کنید و روش کار رو به من توضیح بدید؟
-
فایل etc/crontab رو ادیت کنین
خروجی زیر رو در نظر بگیر :
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
تو خروجی بالا :
m : minute 0-59
h : hoyre 0-23
dom : day of month 0-31
mon : month 0-12
dow : day of week 0-7
user : نام کاربری
command : دستوری که اجرا میشه
زمان رو به چه شکل تنظیم کنیم :
جایی بهتر ار این جا سراغ ندارم که دقیق اموزش داده باشه
http://www.thegeekstuff.com/2009/06/15-practical-crontab-examples
http://www.thegeekstuff.com/2011/07/cron-every-5-minutes/
تمام مقالات دیگر cron :
http://www.thegeekstuff.com/the-geek-stuff-search-powered-by-google/?cx=005666763606120661560%3Azkmegbt_djm&cof=FORID%3A10&ie=UTF-8&q=cron&sa=Search&siteurl=www.thegeekstuff.com%2F&ref=&ss=760j201866j4
اگر از crontab می خاین استفاده کنین به این شکل عمل کنین:
cron -e -u UserName
مثلا برای نام کاربری aliali :
$ crontab -e -u aliali
اگر تا حالا ادیتور تنظیم نکرده باشین خودش ازتون می پرسه که از چه ادیتوری استفاده بکنه . برای نوع تنظیم زمان هم به همون شکلی که بالا تو لینکی که گذاشتم تنظیم کنین .
-
فکر کنم توضیحاتی که دادن کامل باشه ولی منم چند تا نکته رو بگم:
گویا فایل crony.py درست کار می کنه و فایل مورد مورد نظر رو تو crontab وارد می کنه.
چک کنید ببینید فایل crotofy.py درست اجرا میشه یا نه ممکنه مشکل از اون باشه.
چک کنید ببینید اصلا خود crontab کار می کنه یا نه. برای اینکار مثلا بعد از زدن دستور crontab -e خط زیر رو وارد کنید:
* * * * * echo 1 >> crontabtest
اگه بعد از یکی دو دقیقه فایلی به اسم crontabtest تو home خودتون ایجاد شد یعنی crontab درست کار می کنه و مشکل از فایل crotofy هست که درست اجرا نمیشه.
اگه این فایل ایجاد نشد مطلب زیر رو از راهنمای اوبونتو (https://help.ubuntu.com/community/CronHowto) بخونید:
Enable User Level Cron
If the /etc/cron.allow file exists, then users must be listed in it in order to be allowed to run the crontab command. If the /etc/cron.allow file does not exist but the /etc/cron.deny file does, then users must not be listed in the /etc/cron.deny file in order to run crontab.
In the case where neither file exists, the default on current Ubuntu (and Debian, but not some other Linux and UNIX systems) is to allow all users to run jobs with crontab.
No cron.allow or cron.deny files exist in a standard Ubuntu install, so all users should have cron available by default, until one of those files is created. If a blank cron.deny file has been created, that will change to the standard behavior users of other operating systems might expect: cron only available to root or users in cron.allow.
Note, userids on your system which do not appear in /etc/shadow will NOT have operational crontabs, if you desire to enter a user in /etc/passwd, but NOT /etc/shadow that user's crontab will never run. Place an entry in /etc/shadow for the user with a * for the password crypt,ie:
joeuser:*:15169::::::
-
من خودم با cron کار نکردم، ولی اگه نیازه که یکی از دستوراتی که خودتون گفتین رو امتحان کنین و ارور can't lock /var/run/crond.pid میگیرین، باید اون pid رو پاک کنین تا بتونین دستورتون رو اجرا کنین.
دستور زیر رو اجرا کنین :
sudo rm /var/run/crond.pid
بعد دستور خودتون رو اجرا کنین.
-
crond.pid نباید به صورت دستی پاک بشه!
-
من خودم با cron کار نکردم، ولی اگه نیازه که یکی از دستوراتی که خودتون گفتین رو امتحان کنین و ارور can't lock /var/run/crond.pid میگیرین، باید اون pid رو پاک کنین تا بتونین دستورتون رو اجرا کنین.
دستور زیر رو اجرا کنین :
sudo rm /var/run/crond.pid
بعد دستور خودتون رو اجرا کنین.
سرویسشو از کار بندازین درست تر هست :
sudo service cron stop
-
قبلا crontab رو امتحان کرده بودم ولی برای این اسکریپت پایتون کار نمیکنه.
crontab برای کارهای دیگه کار میکنه ، خود اسکریپت هم که دستی اجرا میشه و درست کار میکنه.
هیشکی تونسته این اسکریپت رو با crontab اجرا کنه؟
-
قبلا crontab رو امتحان کرده بودم ولی برای این اسکریپت پایتون کار نمیکنه.
crontab برای کارهای دیگه کار میکنه ، خود اسکریپت هم که دستی اجرا میشه و درست کار میکنه.
هیشکی تونسته این اسکریپت رو با crontab اجرا کنه؟
احتمالا دستوری که برای اجرای اسکریپت میزارین تو کرون مشکل داره. موقعی که زمان اجراش فرا میرسه فایل
var/log/syslog/ رو چک کنین لوگ های کرون تو اون جا ذخیره میشن . دلیل اجرا نشدن رو اون جا می نویسه.
tail -f /var/log/syslog
-
این هم خروجی :
Aug 24 19:17:01 hsn6-desktop CRON[1572]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Aug 24 19:18:40 hsn6-desktop crontab[1741]: (hsn6) REPLACE (hsn6)
Aug 24 19:19:01 hsn6-desktop cron[848]: (hsn6) RELOAD (crontabs/hsn6)
Aug 24 19:20:01 hsn6-desktop CRON[1744]: (hsn6) CMD (python ~/crotofy/crotofy.py)
Aug 24 19:20:02 hsn6-desktop CRON[1743]: (CRON) info (No MTA installed, discarding output)
-
دستورتون رو بزارین تو یک فایل با قابلیت اجرایی بعد دستور اجرا کردن اون فایل رو تو کرون بزارین. اون جوری شاید کار کرد
-
دستورتون رو بزارین تو یک فایل با قابلیت اجرایی بعد دستور اجرا کردن اون فایل رو تو کرون بزارین. اون جوری شاید کار کرد
کاری که گفتید هم نشد!