यदि आप हर n
मिनट क्रोन चलाना चाहते हैं , तो मूल्य के आधार पर कुछ संभावित विकल्प हैं n
।
n
60 (1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30) को विभाजित करता है
यहाँ, /
संकेतन का उपयोग करके समाधान सीधा है :
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7)
# | | | | |
# * * * * * command to be executed
m-59/n * * * * command
उपर्युक्त में, n
मूल्य n
का m
प्रतिनिधित्व करता है और किसी से छोटे मूल्य का प्रतिनिधित्व करता है n
या *
। यह कमांड को मिनटों में निष्पादित करेगाm,m+n,m+2n,...
n
60 को विभाजित नहीं करता है
यदि n
आप 60 को विभाजित नहीं करते हैं, तो आप इसे क्रोन के साथ सफाई से नहीं कर सकते हैं लेकिन यह संभव है। ऐसा करने के लिए आपको क्रोन में एक परीक्षण लगाने की आवश्यकता है जहां परीक्षण समय की जांच करता है। यह सबसे अच्छा तब किया जाता है जब UNIX टाइमस्टैम्प को देखें, तब से कुल सेकंड 1970-01-01 00:00:00 UTC
। मान लें कि हम कमांड को पहली बार चलाना शुरू करना चाहते हैं, जब मार्टी मैकफली रिवरडेल में पहुंचे और फिर इसे हर n
मिनट बाद दोहराएं ।
% date -d '2015-10-21 07:28:00' +%s
1445412480
एक cronjob के लिए हर 42
nd मिनट को चलाने के लिए `2015-10-21 07:28:00 'के बाद, crontab इस तरह दिखेगा:
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7)
# | | | | |
# * * * * * command to be executed
* * * * * minutetestcmd "2015-10-21 07:28:00" 42 && command
के minutetestcmd
रूप में परिभाषित किया गया है
#!/usr/bin/env bash
starttime=$(date -d "$1" "+%s")
# return UTC time
now=$(date "+%s")
# get the amount of minutes (using integer division to avoid lag)
minutes=$(( (now - starttime) / 60 ))
# set the modulo
modulo=$2
# do the test
(( now >= starttime )) && (( minutes % modulo == 0 ))
टिप्पणी: UNIX समय छलांग सेकंड से प्रभावित नहीं है
टिप्पणी: cron
कोई उप-दूसरी सटीकता नहीं है