क्रोनजॉब हर 25 मिनट में


13

मैं जानना चाहता हूं कि क्या हर 25 मिनट में नौकरी चलाने का कोई आसान तरीका है। क्रोनजोब में, यदि आप मिनट पैरामीटर को * / 25 के रूप में निर्दिष्ट करते हैं, तो यह हर घंटे केवल 25 वें और 50 वें मिनट पर चलेगा

जवाबों:


15

Crontab में कमांड को निष्पादित किया जाता है, /bin/shताकि आप अंकगणितीय विस्तार का उपयोग करके गणना कर सकें कि वर्तमान मिनट modulo 25% नोटबुक है:

*/5 * * * * [ $(( $(date +\%s) / 60 \% 25 )) -eq 0 ] && your_command

cronइस पूरी प्रविष्टि को हर 5 मिनट में चलाएगा, लेकिन केवल अगर वर्तमान मिनट (एपोक के बाद के मिनटों में) modulo 25 बराबर शून्य यह चलेगा your_command

के रूप में अन्य लोगों ने बताया है, 1 दिन नहीं समान रूप से 25 मिनट से विभाज्य है, इसलिए इस का कारण नहीं बनेगा है your_commandहर दिन एक ही समय में चलाने के लिए, लेकिन यह होगा कि हर 25 मिनट चलाते हैं।


बस जीनियल ...
टॉमस

ध्यान दें कि ISC से क्रोन के कार्यान्वयन के साथ कम से कम आपको बैकस्लैश के साथ उन% वर्णों से बचने की आवश्यकता होगी।
स्टीफन चेजलस

@ स्टीफनचेज़लस, अच्छी बात है। मैं आगे गया और प्रतिशत संकेतों से पहले बैकस्लैश जोड़ दिया क्योंकि मेरे ज्ञान के अनुसार क्रोन के प्रत्येक कार्यान्वयन के लिए यह आवश्यक है।
CODE-REaD

7

आपका सबसे अच्छा दांव 20 मिनट या 30 मिनट पर चलना है।

आप अगला सर्वश्रेष्ठ हर 5 मिनट में ट्रिगर कर सकते हैं, और फिर एक आंतरिक गिनती या टाइमस्टैम्प रख सकते हैं, और हर 5 वें ट्रिगर को चला सकते हैं, या यदि अंतिम रन के बाद 25 मिनट बीत चुके हैं।

अधिक जटिल एक दिन के लिए सही समय पर काम करना, आधी रात से शुरू करना और दिन के अंत में त्रुटि को स्वीकार करना होगा। इसमें अलग-अलग घंटों में क्रॉस्टैब प्रविष्टि को डुप्लिकेट करना शामिल है।

इससे अधिक जटिल पूरे महीने के लिए कई बार काम करना होगा, जिसमें विभिन्न संयोजनों को कवर करने के लिए क्रॉस्टैब प्रविष्टि की कई प्रतियां शामिल होंगी।

अंत में आप अपने खुद के हमेशा डेमॉन पर लागू कर सकते हैं, और शेड्यूलिंग करते हैं।


6

मेरे पास इसके साथ कोई प्रत्यक्ष अनुभव नहीं है, लेकिन fcron वह करता है जो आप बॉक्स से बाहर करना चाहते हैं। इसके प्रलेखन के अनुसार आप आवृत्तियों को निर्दिष्ट कर सकते हैं:

# Get our mails every 30 minutes 
@ 30 getmails -all 

# make some security tests every 48 hours of system up time, 
# force a mail to be sent to root even if there is no output 
@mailto(root),forcemail 2d /etc/security/msec/cron-sh/security.sh

आप 25 मिनट यहाँ कहाँ देखते हैं?
फिलोमथ

Fcron का उपयोग करना @ 25 commandचाहिए और चाल चलनी चाहिए।
कालेब

धन्यवाद कालेब। मुझे दस्तावेज़ीकरण से एक सीधे उठाने के बजाय एक अनुकूलित उदाहरण बनाना चाहिए।
चीयर्स

2

मुझे संक्षेप में बताएं कि यहां क्या समस्या है। मिनट फ़ील्ड में 25 दर्ज cronकरने से वर्तमान समय का मिनट 25 के बराबर हो जाता है, जो कि एक घंटे में एक बार होता है। आप मैचों की एक सूची दर्ज कर सकते हैं, समस्या यह है कि 60 (एक घंटे का मिनट) 25 से विभाज्य नहीं है, इसलिए आपको घंटे के आधार पर कई प्रविष्टियां जोड़ने की आवश्यकता है। 60 और 25 का न्यूनतम सामान्य गुण 300 है, जो कि 5 * 60 है। इसलिए आपको अपनी मूल शुरुआत तक लौटने तक 5 घंटे तक साइकिल चलाना होगा। उदाहरण के लिए:

0, 25, 50
15, 40
5, 30, 55
20, 45
10, 35
...

लेकिन यहाँ फिर से, 24 (दिन में एक घंटे) 5 से विभाजन योग्य नहीं है, 5 और 24 में से कम से कम आम कई है बस 5 * 24 = 120. और इतने पर और ...


हो सकता है कि उत्तर मूल प्रश्न पर टिप्पणी हो।
फिलोमथ

1

आप किसी फ़ाइल के अंतिम संशोधन समय के साथ खेल सकते हैं

  • एक छोटी स्क्रिप्ट बनाएं (उदाहरण के लिए /usr/local/bin/age) जो एक फ़ाइल की आयु का उत्पादन करेगी:

    #bin/sh
    echo $(( $( date +%s ) - $( stat -c %Z $1 ) ))
    

आपका कॉन्टैब इस तरह दिखेगा (यदि मैं सही हूं तो 25 मिनट 1500 सेकंड के बराबर होता है)

* * * * *  [ $(/usr/local/bin/fileage /var/tmp/your_command.offset) -gt 1500  ] && touch /var/tmp/your_command.offset && your_command

ध्यान दें कि मैं /var/tmpइसके बजाय उपयोग करता हूं /tmpक्योंकि FHS के अनुसार इसे सिस्टम शटडाउन / स्टार्टअप पर डिलीट नहीं किया जाना चाहिए।


-2

मुझे लगता है कि निम्नलिखित को 0 0/25 * * * काम करना चाहिए?


मेरे ज्ञान के अनुसार यह हर मिनट के लिए काम करेगा।

कि एक बार हर एक घंटे पर निष्पादित करेगा ... 25 घंटे? 0/25 ... यह भी सुनिश्चित नहीं है कि क्या करता है, लेकिन यह नहीं है कि ओपी बाद में क्या है।
कालेब
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.