ক্রোন জব, এলোমেলো শুরু কিন্তু সময়সীমার মধ্যে


12

আমি চাই যে প্রতিদিন একবার, একবার, 0900 থেকে 1200 এর মধ্যে যে কোনও সময় শুরু হয়ে
গিয়ে স্ক্রিপ্টটি চালানো হোক ash ড্যাশ সিনট্যাক্স সম্পর্কে আমি পুরোপুরি নিশ্চিত নই - এর অর্থ কি এই স্ক্রিপ্টটি প্রায় প্রতিটি ঘন্টা চলবে 9-12, বা এটির মধ্য দিয়ে RANDOMLY শুরু হবে does 9-12? কারণ আমার পরেরটি দরকার need

উত্তর:


8

আমি কখনও ক্রোন বাস্তবায়ন দেখিনি যা এলোমেলো সময়ে কাজ চালানোর উপায় রাখে। এটি একটি বিজোড় প্রয়োজন। ডকুমেন্টেশন হিসাবে বলা হয়েছে, এর 9-12জন্য একটি শর্টকাট 9,10,11,12, এবং মানে 9 থেকে 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

5
"এটি একটি বিজোড় প্রয়োজন।" আমি একমত নই অনেক অ্যাপ্লিকেশন, বিশেষত যাঁরা একটি সার্ভার (যেমন প্যাকেজ ম্যানেজার বা কনফিগারেশন ম্যানেজমেন্ট ক্লায়েন্টস) এর সাথে পর্যায়ক্রমে চেক ইন করতে হয় তাদের একটি বজ্রপালনের পরিস্থিতি এড়াতে তাদের মৃত্যুদণ্ড কার্যকর করার সময়টি ছড়িয়ে দেওয়া প্রয়োজন । প্রকৃতপক্ষে, এই জাতীয় অনেক অ্যাপ্লিকেশনগুলির মধ্যে অন্তর্নির্মিত বিকল্পগুলি রয়েছে (উদাহরণস্বরূপ ইয়ামের --randomwaitপক্ষে যুক্তি বা --splayশেফ-ক্লায়েন্টের পক্ষে যুক্তি), তবে যাঁরা তা করেন না, তাদের জন্য একটি এলোমেলোভাবে কার্যকর করার সময়টি একটি কাজের শিডিয়ুলারে থাকার জন্য একটি সহায়ক বৈশিষ্ট্য হবে।
jayhendren


2

অজগর স্ক্রিপ্টগুলির জন্য আমি একইরকম প্রয়োজনীয়তা অর্জন করে শেষ করেছি, তবে এটিকে স্ক্রিপ্টের মাধ্যমে বাস্তবায়িত করে, এলোমেলো + স্লিপ ফাংশন ব্যবহার করে, পরে মধ্যরাতে ক্রোন জব চালু করছি

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)

লিনাক্স থেকে সাধারণ স্ক্রিপ্টগুলি প্রায়শই এলোমেলোভাবে শুরুর সময়টি নির্ধারণ করে: একটি নির্দিষ্ট সময় দিন, তারপরে শুরুতে ঘুমান।
নেড 64৪
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.