2009-09-13 17 views
10

मैं एक क्रोनबॉज कैसे स्थापित करूं जो हर 25 वें घंटे चलता है?हर 25 घंटे क्रोनबॉज?

+1

इसका उद्देश्य क्या है? 24 घंटे स्वीकार्य क्यों नहीं है? –

+0

यह भी देखें: http://stackoverflow.com/questions/745901/how-to-do-a-cron-job-every-72-minutes – mob

+2

Google से कानूनी उपयोग केस के साथ यहां आया, जो कि एक से अधिक से बचने के लिए है एक आवधिक नौकरी के लिए दैनिक एपीआई सीमा जो विशेष रूप से समय-संवेदनशील नहीं है। रूढ़िवादी होने और डेलाइट बचत बग से बचने के लिए अतिरिक्त घंटे जोड़ना। – mahemoff

उत्तर

16

बस एक अनुमान है, लेकिन यदि आप करते नहीं

मेरे सिर के ऊपर से बेस्ट हैक: पिछली बार इसे चलाया गया था ट्रैक करने के लिए एक स्क्रिप्ट लिखते हैं, और सशर्त में चलाते हैं तो यह 25 से अधिक था घंटो पहले।

क्रॉन कि चालक स्क्रिप्ट हर घंटे चलाने के लिए।

7

at आदेश जारी करना आसान होगा, जब आप वर्तमान चालू करते हैं तो अगली नौकरी का समय और तिथि निर्दिष्ट करें, लेकिन आप वर्तमान की शुरुआत में प्रक्रिया के लिए cronjob प्रविष्टि को अपडेट करके क्रोनबॉज के साथ अनुकरण कर सकते हैं रन (अंत में नहीं 'तो आपको नौकरी चलाने के लिए समय को ध्यान में रखना होगा)।

+0

यदि आप एक नौकरी याद करते हैं, तो 'एटी' चाल विफल हो सकती है, उदाहरण के लिए, यदि सिस्टम चलाने के लिए निर्धारित होने पर सिस्टम डाउन हो जाता है। –

0

आप लूप में स्क्रिप्ट चलाने के लिए 'नींद' या 'घड़ी' कमांड का उपयोग कर सकते हैं। बस सुनिश्चित करें कि आप स्क्रिप्ट निष्पादित की गई है।

2

सेटअप एक प्रति घंटा काम और अपनी स्क्रिप्ट में जाँच करता है, तो 25 घंटे इस snipnet के साथ अतीत हैं:

if [ $((((`date +%s` - (`date +%s` % 3600))/3600) % 25)) -eq 0 ] ; then 
your script 
fi 
+0

अधिक टिप्पणियों की सराहना की जाएगी। यह कोड टाइमस्टैम्प उत्पन्न करता है (युग के बाद से सेकंड), इसे घंटों में परिवर्तित करता है और मॉड्यूल 25 (इसलिए हर 25 घंटे) की जांच करता है। यदि आवश्यक दिन में घंटे बदलने के लिए "-eq 0" "-eq 10" में परिवर्तन की आवश्यकता है ... – darkless

-1

मुझे लगता है कि आप इस

0 */25 * * * ... 
+2

आप 23 – erdomester

+0

24 से अधिक घंटे की आवृत्ति सेट नहीं कर सकते हैं 24 डेबियन में काम करता है। –

1

प्रयास करना चाहिए अगर आप गिनती आप किसी भी आवृत्ति प्राप्त कर सकते हैं Epoch के बाद घंटे (मिनट, दिन, या सप्ताह), अपनी स्क्रिप्ट के शीर्ष पर एक शर्त जोड़ें, और स्क्रिप्ट को अपने क्रॉन्टाब पर हर घंटे चलाने के लिए सेट करें:

#!/bin/bash 

hoursSinceEpoch=$(($(date +'%s/60/60'))) 

# every 25 hours 
if [[ $(($hoursSinceEpoch % 25)) -ne 0 ]]; then 
    exit 0 
fi 

date(1) रिटर्न वर्तमान दिनांक, हम युग के बाद से सेकंड के रूप में यह स्वरूपित (%s) और फिर हम बुनियादी गणित कार्य करें:

# .---------------------- bash command substitution 
# |.--------------------- bash arithmetic expansion 
# || .------------------- bash command substitution 
# || | .---------------- date command 
# || | | .------------ FORMAT argument 
# || | | |  .----- formula to calculate minutes/hours/days/etc is included into the format string passed to date command 
# || | | |  | 
# ** * * *  * 
    $(($(date +'%s/60'))) 
# * * --------------- 
# | |  | 
# | |  ·----------- date should result in something like "1438390397/60" 
# | ·-------------------- it gets evaluated as an expression. (the maths) 
# ·---------------------- and we can store it 

और तुम प्रतिमिनट, प्रति घंटा, दैनिक या मासिक क्रॉन नौकरियों के साथ इस दृष्टिकोण का उपयोग कर सकते हैं:

#!/bin/bash 
# We can get the 

minutes=$(($(date +'%s/60'))) 
hours=$(($(date +'%s/60/60'))) 
days=$(($(date +'%s/60/60/24'))) 
weeks=$(($(date +'%s/60/60/24/7'))) 

# or even 

moons=$(($(date +'%s/60/60/24/656'))) 

# passed since Epoch and define a frequency 
# let's say, every 13 days 

if [[ $(($days % 13)) -ne 0 ]]; then 
    exit 0 
fi 

# and your actual script starts here 
संबंधित मुद्दे