लिनक्स कमांड के लिए यादृच्छिक देरी जोड़ना


13

मैं अपने सर्वर पर समानांतर कमांड करने के लिए फंक का उपयोग कर रहा हूं ।

दूसरे दिन, हमारे पास एक समस्या थी जब एक सेवा के puppetमाध्यम से पुनः आरंभ करने से funcहमारे सभी सेवर puppetmasterएक ही समय में हिट हो गए।

मेरा प्रश्न: मैं व्यक्तिगत सर्वर पर निष्पादित होने से पहले विलंब को जोड़ते हुए सर्वर के सेट पर उसी सटीक कमांड को कैसे निष्पादित कर सकता हूं?

उदाहरण के लिए: random_delay && service puppet restart

मुझे random_delayकमांड के हिस्से में दिलचस्पी है ।

जवाबों:


25

sleep $((RANDOM % MAXWAIT)) जहां MAXWAIT सेकंड में अधिकतम वांछित विलंब है।


लगता है कि "1" पर अटक जाता है अगर आप उस गूंज ... विचार?
कोरी एस।

इस पर भी ध्यान नहीं दिया गया। इसे आज़माएं, x के लिए 1 2 3 4 5 में; do RANDOM = $ x; मैं $ = ((रैंडम% 10)); इको $ मैं; नींद $ i; जाहिर है, S19N के जवाब में MAXWAIT मेरे जवाब में 10 के प्रभाव के समान है। RANDOM बीज बदलें और जो भी आप चाहते हैं कठपुतली कोड जोड़ें।
dtbnguyen

2
@CoreyS। $ रैंडम अंतिम मूल्य से दूर है, इसलिए लूपिंग (मैंने 5/6/7, 2/7 और 5 पर अटक गया है)। sleep $((RANDOM % MAXWAIT))सही तरीका है। मैं उत्तर को इस प्रकार संपादित करूँगा।
जेफ फेरलैंड

इसे प्रो पपेट में स्प्ले कहा जाता है । यह एक झुंड झुंड को रोकने के लिए उपयोग किया जाता है , जहां कई मशीनें एक साथ एक ही काम कर रही हैं। इसके अतिरिक्त, मुझे क्रोन शेड्यूलिंग का उपयोग करके सफलता मिली fqdn_rand
फ्रांस्वा ब्यूसोइल

यह बैश-विशिष्ट एक्सटेंशन पर निर्भर करता है। में dash echo sleep $((RANDOM % 900))रिटर्न sleep 0। इसका मतलब यह है कि #!/bin/shस्क्रिप्ट या क्रॉस्टैब जैसी जगहों पर इसका उपयोग करना सुरक्षित नहीं है । (समस्याओं को लगता है कि dashसमझ में नहीं आता है $RANDOM)
Gert van den Berg

1

मुझे S19N का अभिनव काफी पसंद है, फिर भी आदर्श समाधान से कम है। मैं केवल यह कहता हूं कि यह आदर्श से कम है, क्योंकि यह अभी भी काफी हद तक गैर-नियतात्मक है जब सामान वास्तव में होगा। मैं बहुत गारंटी देता हूँ कि सामान कब होगा और क्या सामान होगा जब यह होगा।

कठपुतली आर्केस्ट्रा वास्तव में एक कठिन समस्या है।
"सर्वश्रेष्ठ-अभ्यास" समाधानों में से एक MCollective का उपयोग करना है जो न केवल आपको कॉन्फ़िगर करने की अनुमति देगा जब कठपुतली आपके मशीनों के क्लस्टर पर चलती है, बल्कि आप इसे अन्य समान आर्केस्ट्रा समस्याओं के लिए भी उपयोग कर सकते हैं।


0
0 */12 * * * root perl -e 'sleep int(rand(43200))' && service puppet restart

यह हर 12 घंटे में 0 सेकंड और 12 घंटे (43200 = 12 x 60 x 60) के बीच एक यादृच्छिक राशि सोएगा

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.