जवाबों:
मैंने कभी भी एक क्रॉन कार्यान्वयन नहीं देखा है जो यादृच्छिक समय पर नौकरी चलाने का एक तरीका है। यह एक अजीब आवश्यकता है। जैसा कि प्रलेखन कहता है, 9 से 12 तक हर घंटे के 9-12
लिए एक शॉर्टकट है 9,10,11,12
, और इसका मतलब है।
यदि आप एक यादृच्छिक समय पर नौकरी चलाना चाहते हैं, तो अंतराल की शुरुआत में नौकरी चलाएं, और एक यादृच्छिक देरी जोड़ें। उदाहरण के लिए, 9 और 12 के बीच एक यादृच्छिक घंटे पर चलने के लिए:
SHELL=/bin/bash
0 9 * * * sleep $((3600 * (RANDOM % 4))); do_stuff
ध्यान दें कि RANDOM
बैश या ksh की आवश्यकता है, यह डिफ़ॉल्ट शेल में उपलब्ध नहीं हो सकता है।
यदि आप 9 और 12 के बीच एक यादृच्छिक समय पर चलाना चाहते हैं, तो दूसरे रिज़ॉल्यूशन के साथ, आप RANDOM % 10800
देरी के रूप में उपयोग कर सकते हैं , लेकिन क्योंकि RANDOM
0..32767 की सीमा में है, 0 और 32768% 10800 = के बीच देरी के लिए पूर्वाग्रह होगा 368. इस पूर्वाग्रह से बचने के लिए:
SHELL=/bin/bash
0 9 * * * max=$((32768/10800*10800)); while delay=$RANDOM; ((delay > max)); do :; done; sleep $((delay % 10800)); do_stuff
मैंने अजगर लिपियों के लिए समान आवश्यकता को समाप्त किया, लेकिन स्क्रिप्ट के माध्यम से इसे लागू करना समाप्त कर दिया, यादृच्छिक + नींद कार्यों का उपयोग करके, फिर क्रॉन जॉब @ आधी रात को लॉन्च किया।
from time import sleep
import random
sleep_time = random.randint(0,7200) #7200 seconds = 2 hours * 60 min * 60 sec
print(sleep_time)
sleep(sleep_time)
--randomwait
कि yum या--splay
तर्क को शेफ-क्लाइंट को तर्क देना), लेकिन जो ऐसा नहीं करते हैं, उनके लिए एक यादृच्छिक निष्पादन समय एक नौकरी अनुसूचक में एक उपयोगी सुविधा होगी।