क्रोनजॉब निर्धारित समय से पहले चलता है, क्या गलत हो सकता है?


10

मेरे पास शनिवार के लिए निर्धारित crontab के नीचे है जो 19-23 दिनों के बीच आता है, मुझे यकीन नहीं है कि यह 20 वें (शुक्रवार) पर क्यों चला। कोई अंदाज़ा?

00 21 19-23 * 6 <command>

1
आपको /etc/cron.d/mdadmउबंटू और डेबियन में प्रयुक्त कुछ प्रेरणा मिल सकती है । यह इस प्रकार है कि यह प्रत्येक महीने का पहला रविवार चलाता है:57 0 * * 0 root if [ -x /usr/share/mdadm/checkarray ] && [ $(date +\%d) -le 7 ]; then /usr/share/mdadm/checkarray --cron --all --idle --quiet; fi
कैस्पर 2

धन्यवाद कैस्पर, 0 18 * * 6 [date +\%d -le 07] && <task> मेरे लिए अच्छी तरह से काम कर रहा है, जहां हर महीने के पहले शनिवार को चलना आवश्यक है।
सिमर

जवाबों:


16

उस क्रोन की अभिव्यक्ति इसका अनुवाद करती है:

At 21:00 on the 19, 20, 21, 22 and 23rd of every month and every Saturday.

तो यह स्पष्ट रूप से 20 वीं शुक्रवार को चलाने के लिए क्रोन को बताया। इसका कारण यह है:

When the schedule specifies both date and weekday, they're combined with a logical OR,
i.e. the job will run if current_minute == scheduled_minute 
&& current_hour == scheduled_hour && current_month == scheduled_month && 
(current_day == scheduled_date OR current_weekday == scheduled_weekday).

यह जानकारी इस उपयोगी क्रोन टूल से है: http://crontab.guru/

दिए गए दिनों को चलाने के लिए अपनी नौकरी बनाने के लिए जब यह शनिवार हो तो आप इसका उपयोग कर सकते हैं:

00 21 19-23 * * test $(date +%u) -eq 6 && command

यह समाधान सप्ताह के क्रीस्टैब दिन बनाम महीने के दिन से है?


6
%क्रोनजॉब्स में विशेष अर्थ वाले खबरदार - यह कमांड के स्टड को अलग करता है।
user1686
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.