जवाबों:
मैंने कभी भी एक क्रॉन कार्यान्वयन नहीं देखा है जो यादृच्छिक समय पर नौकरी चलाने का एक तरीका है। यह एक अजीब आवश्यकता है। जैसा कि प्रलेखन कहता है, 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देरी के रूप में उपयोग कर सकते हैं , लेकिन क्योंकि RANDOM0..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तर्क को शेफ-क्लाइंट को तर्क देना), लेकिन जो ऐसा नहीं करते हैं, उनके लिए एक यादृच्छिक निष्पादन समय एक नौकरी अनुसूचक में एक उपयोगी सुविधा होगी।