سؤال

شكرًا لمساعدتي في وضع وظائف Cron الخاصة بي ، لقد كان Crontab حقًا منجمًا ذهبيًا بالنسبة لي.

لسوء الحظ ، لدي مشكلة ، وليس لدي أي فكرة عن أي شيء قد يكون ... في الأساس لا تبدأ الوظيفة أثناء قيام جوار الوظائف. سأشرح


هذه قائمة عمل Crontabs الخاصة بي:

*/10 * * * * python /webapps/foo/manage.py fetch_articles

*/10 * * * * python /webapps/bar/manage.py fetch_books

لقد كتبت لهم لأنهم في ملف وتخزينهم باستخدام crontab/path/to/file.

فحص مع crontab -l والوظائف هناك.


الشيء الغريب هو أن 1 من هذه ينفذ كل 10 دقائق بشكل طبيعي ... لكن الآخر لا. حاولت الكتابة في الأمر يدويًا ، وهو يعمل بشكل جيد بدون مشكلة.


هل لدى أي شخص اقتراحات؟

ستكون المساعدة موضع تقدير كبير ، شكرًا يا رفاق.


تحديث:

لقد كنت في ملفات سجل النظام ووجدت هذا:

Mar 5 02:50:01 LocalHost Cron [21652]: (Root) CMD (Python /webapps/foo/manage.py fetch_books)

هل هذا يعني أن Crontab يصف الوظيفة بشكل جيد؟


شكرا على تعليقاتكم يا رفاق!


تم التصليح! شكرا جزيلا للجميع!!

كانت المشكلة هي أن البرنامج النصي فشل بصمت ، وأعتقد أنه يرجع إلى تغيير Python_Path بسبب المكان الذي يتم فيه استدعاء البرنامج النصي من ... أنا متأكد تمامًا.

هل كانت مفيدة؟

المحلول

يركض Cron دائمًا في بيئة مختلفة عن ما تعتقده :-)

أنا دائما لدي cronjobs إعداد مثل:

*/10 * * * * ( date ; python /webapps/foo/manage.py fetch_articles ) >>/tmp/fetch.out 2>&1

لضمان وجود شيء مسجل يمكنني النظر إليه.

سيؤدي هذا إلى تضييق مشكلتك إلى:

  • cron ، إذا لم يظهر ملف temp ؛ أو
  • البرنامج النصي الخاص بك ، إذا ظهر.

وفي الحالة الأخيرة ، نأمل أن يكون هناك بعض الإخراج الذي يمكنك تصحيحه. إذا لم يكن كذلك ، ضع الإخراج هناك.

طريقة واحدة للقيام بذلك هي وضع:

set -x

في الجزء العلوي من البرنامج النصي الذي سيؤدي إلى إخراج جميع الخطوط قبل التنفيذ. تميل جميع البرامج النصية إلى البدء:

#!/bin/bash
#set -x

لذلك يمكنني فقط عدم تفكيك هذا السطر الثاني أثناء تصحيح الأخطاء.

نصائح أخرى

من MinPage Crontab:

الأخطاء على الرغم من يتطلب cron من كل إدخال في نهاية crontab في شخصية سطر جديد، لن يكتشف الأمر Crontab أو Cron Daemon هذا الخطأ. بدلاً من ذلك ، سيظهر crontab لتحميل بشكل طبيعي. ومع ذلك ، لن يتم تشغيل الأمر أبدًا. الخيار الأفضل هو التأكد من أن Crontab لديك خط فارغ في النهاية.

(تركيزي).

أعتقد أن إجابة Unutbu صحيحة على الأرجح إذا كانت الوظيفة الثانية التي لا تعمل.

مهما كان هناك شيء آخر للتحقق منه هو ما إذا كان /webapps/bar/manage.py يتطلب الوصول الحصري إلى أي موارد ، مثل مآخذ الشبكة/TempFiles وما إلى ذلك. نظرًا لأنك تبدأ عمليتين في نفس الوقت ، فقد تثير حالة سباق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top