2009-06-17 20 views
12

*/5 * * * * मेरा आदेशइस क्रॉन प्रविष्टि को दो बार निष्पादित क्यों किया जाता है?

यह प्रविष्टि काम करता है लेकिन हर 5 मिनट में इसे दो बार निष्पादित किया जाता है, क्यों?

/var में/log/क्रॉन यह पता चलता है:
जून 16 22:20:01 टेस्ट Crond [12512]: (रूट) अध्यक्ष एवं प्रबंध निदेशक (मेरे आदेश)
जून 16 22:20:01 टेस्ट Crond [12,516] : (रूट) सीएमडी (मेरा आदेश)

तो यह दो यूर्स से नहीं है।
यह केवल crontab -e -u रूट

के साथ एक बार दर्ज किया गया है कमांड एक php कमांड है।

+0

[क्यों मेरे क्रॉन जॉब कई बार क्रियान्वित?] की संभावित डुप्लिकेट (https://stackoverflow.com/questions/24012666/why-my-cron-job-executing-multiple-times) –

उत्तर

32

विवरण में कुछ भी इसे दो बार निष्पादित करने का कारण नहीं देता है। कहीं और देखो।

  • क्या दो उपयोगकर्ता इसे कॉल करते हैं?
  • क्या यह दो बार दर्ज किया गया है?
  • क्या यह स्वयं को कॉल करता है?
  • क्या यह पुनरावृत्ति के लिए गति की स्थिति में सेट करता है?

यदि यह एक खोल स्क्रिप्ट आप को क्रियान्वित कर रहे हैं, यह एक लॉग फ़ाइल को whoami और date संलग्न की है। आप कारण खोदने में सक्षम होना चाहिए।

अद्यतन

प्रकार ps -एक, सुनिश्चित करें कि crond दो बार नहीं चल रही है।

+0

कृपया अद्यतन देखें प्रश्न – erotsppa

+1

आप जवाब नहीं दिया: क्या यह खुद को बुलाता है? क्या यह पुनरावृत्ति के लिए गति की स्थिति में स्थापित है? –

+0

अद्यतन उत्तर देखें :) –

0

यह सुनिश्चित करने के लिए कि यह crontab प्रविष्टि नहीं है जो इसे दो बार चलाने के कारण है। क्या हो रहा है यह जानने का सबसे तेज़ तरीका क्रॉन जॉब स्क्रिप्ट में कुछ डिबगिंग जोड़ना है।

echo "Script starting" 
date 
whoami 
: आप कुछ नहीं करते हैं, तो डिफ़ॉल्ट रूप से क्रॉन उत्पादन [email protected] लिए (जब तक आप कॉन्फ़िगर किया है इस अलग होने की), भेज दिया जाएगा तो यह सोचते हैं आप रूट पहुँच, जैसे, स्क्रिप्ट के लिए कुछ डिबगिंग जानकारी जोड़ने

और आउटपुट को देखें। यह आपको यह पता लगाने के लिए शुरू कर देगा कि इसे दो बार कैसे बुलाया जा रहा है।

3

यदि यह आपके द्वारा इंस्टॉल किए गए एप्लिकेशन के लिए एक आदेश है, तो हो सकता है कि यह पहले से ही उसी प्रविष्टि को /etc/crontab या /etc/cron.d/<something> पर जोड़ा गया हो।

+0

यह मेरी समस्या थी - मैंने मैन्युअल रूप से रूट क्रोंटब में प्रवेश किया था, लेकिन '/ etc/cron.d' में एक फ़ाइल भी बहुत समान थी, लेकिन एक ही कॉल के बिल्कुल वही संस्करण नहीं थी। पूंछ का पीछा अब खत्म हो गया, वापस नौकरी के लिए। :) –

0

ऐसा लगता है कि आप दो crond चल रहा है, पीआईडी ​​12512 के साथ एक और एक पीआईडी ​​12516.

3

मैं पुष्टि करते हैं के साथ है - मेरी क्रॉन भी दो बार चलाने के ...

Jul 24 14:40:01 localhost cron[2713]: (root) CMD (/etc/apache2/generator/reloader.do) 
Jul 24 14:41:01 localhost cron[9481]: (root) CMD (/etc/apache2/generator/reloader.do) 
Jul 24 14:41:01 localhost cron[10724]: (root) CMD (/etc/apache2/generator/reloader.do) 
Jul 24 14:42:01 localhost cron[20380]: (root) CMD (/etc/apache2/generator/reloader.do) 
Jul 24 14:42:01 localhost cron[20832]: (root) CMD (/etc/apache2/generator/reloader.do) 

मेरे crontab

ग्रेप आर/var/स्पूल/-e की reloader

/var/spool/cron/crontabs/root:* * * * * /etc/apache2/generator/reloader.do 

उत्पादन:

whoami 
date 
------ 

उत्पादन:

root 
root 
Tue Jul 24 14:46:02 CEST 2012 
--------- 
Tue Jul 24 14:46:03 CEST 2012 
--------- 

मेरे वर्तमान समाधान नहीं है:

if [ -f /etc/apache2/generator/reloader.lock ] 
then 
exit 
fi 
touch /etc/apache2/generator/reloader.lock 
/etc/apache2/generator/reloader 
rm /etc/apache2/generator/reloader.lock 

लेकिन यह जवाब क्यों कि ऐसा है ...

सिस्टम नहीं है - Gentoo क्रॉन - विक्सी-क्रॉन

ps aux wwf उत्पादन का हिस्सा (क्रॉन अंदर दोपहर का भोजन किया कार्य)

root  10843 0.0 0.0 16480 560 ?  Ss Jun06 0:01 /usr/sbin/cron 
root  29797 0.0 0.0 25020 964 ?  S 15:08 0:00 \_ /usr/sbin/cron 
root  29799 0.0 0.0 9188 1228 ?  Ss 15:08 0:00  \_ /bin/bash /etc/apache2/generator/reloader 
root  29822 0.0 0.0 14800 988 ?  R 15:08 0:00   \_ ps aux wwf 
------ 
root  8215 0.0 0.0 16480 836 ?  Ss 14:23 0:00 /usr/sbin/cron 
root  31419 0.0 0.0 25020 968 ?  S 15:08 0:00 \_ /usr/sbin/cron 
root  31423 0.0 0.0 9188 1228 ?  Ss 15:08 0:00  \_ /bin/bash /etc/apache2/generator/reloader 
root  31431 0.0 0.0 14804 1004 ?  R 15:08 0:00   \_ ps aux wwf 

संपादित करें:

+०१२३५१६४१०६

मैं था नोटिस, कि आरंभ तिथि के रूप क्रॉन प्रक्रिया रिपोर्ट Jun06 (आज Jun24 है)

root  10843 0.0 0.0 16480 560 ?  Ss Jun06 0:01 /usr/sbin/cron 
root  8215 0.0 0.0 16480 836 ?  Ss 14:23 0:00 /usr/sbin/cron 

सही ढंग से दूसरा प्रक्रिया रिपोर्ट में से एक (सर्वर uprime है ~ 40 मिनट - मैं इसे recenty को पुनः आरंभ किया था) एक महत्वपूर्ण जानकारी - यह मेजबान मशीन पर चल रहा वी-सर्वर है।

ही पीआईडी ​​

हल के साथ की कोई बात नहीं है कि मैं क्या है (/etc/init.d/vixie-cron पुनः आरंभ) इसे शुरू:

मैं कारण मिल गया है। विभिन्न संदर्भ के साथ एक वी-सर्वर दो बार चलाया गया था। संभावित स्पष्टीकरण - कोई संदर्भ है, जबकि मशीन चल रहा था बदल गया है, और इसके परिणामस्वरूप, नहीं सभी प्रक्रियाओं की मौत हो गई है, और क्या; अधिक है - वे VServer (संदर्भ 303 और 3031) के नए उदाहरण को प्रभावित किया:

root     10843  3031 developer      0.0  0.0  16480   560 ?        Ss   Jun06   0:01 /usr/sbin/cron 
root     16509   303 developer      0.0  0.0  16480   836 ?        Ss   15:18   0:00 /usr/sbin/cron 

मेरे पास टीईआरएम पुरानी प्रक्रिया है, और समस्या हल हो गई है।

0

मैं OpenWrt का उपयोग करता हूं।

मुझे एक ही समस्या है, लेकिन मेरे पास सिर्फ एक क्रॉन है: ps | grep crond:

31447 root  1508 S /usr/sbin/crond -c /etc/crontabs -l 8 
31454 root  1500 S sh -c ps | grep crond 
31456 root  1496 S grep crond 

लॉग इन | grep cron

May 27 13:15:01 decibox cron.info crond[31447]: crond: USER root pid 1594 cmd /root/check_connect.php.sh 
May 27 13:20:01 decibox cron.info crond[31447]: crond: USER root pid 2103 cmd /root/check_connect.php.sh 
May 27 13:20:01 decibox cron.info crond[31447]: crond: USER root pid 2325 cmd /root/check_connect.php.sh 
May 27 13:25:01 decibox cron.info crond[31447]: crond: USER root pid 2880 cmd /root/check_connect.php.sh 
+0

हालांकि यह सवाल का जवाब नहीं देता है। या तो मूल प्रश्न पर टिप्पणी करें या यदि आपकी स्थिति अलग है, तो अपने आप को शुरू करें। –

4

क्रोंटैब में wget अक्सर 15 मिनट की सीमा है। हमारे मामले में यह सिर्फ मामला था, और उन 15 मिनट के बाद नौकरी एक टाइमआउट के साथ समाप्त होती है और फिर तुरंत फिर से चलाती है। तो, इसका समाधान कुछ हद तक crontab में cronjob स्थापित करना था:

1 2 * * * root wget --read-timeout=3600 -O - 'http://cron-job-url' >/dev/null 2>&1 

...

1 2 * * * root wget -O - 'http://cron-job-url' >/dev/null 2>&1 

तो, wget बात है। मतलब 3600 = 1 घंटा तो। यदि आपको आवश्यकता हो तो अधिक!

0

मुझे एक ही समस्या थी, मेरे मामले में यह था कि मैं गलती से क्रॉन सेवा को दो बार शुरू करता हूं। क्रॉन # /etc/init.d/crond stop को क्रॉप करने के बाद और इसे फिर से शुरू किया # /etc/init.d/crond start, यह पूरी तरह से काम किया।

मुझे उम्मीद है कि यह किसी की भी मदद कर सकता है।

संबंधित मुद्दे