কীভাবে দ্বিপাক্ষিক ক্রোনজব শিডিউল করবেন?


10

crontab (5) নিম্নলিখিত ক্ষেত্রগুলির সংজ্ঞা দেয়:

       field         allowed values
       -----         --------------
       minute        0-59
       hour          0-23
       day of month  1-31
       month         1-12 (or names, see below)
       day of week   0-7 (0 or 7 is Sun, or use names)

এবং ব্যাখ্যা:

 Step values can be used in conjunction with ranges.  Following a range
 with ``/<number>'' specifies skips of the number's value through the
 range.  For example, ``0-23/2'' can be used in the hours field to specify
 command execution every other hour (the alternative in the V7 standard is
 ``0,2,4,6,8,10,12,14,16,18,20,22'').

সুতরাং, কোন দ্বিপাক্ষিক কাজ নয়, যতদূর আমার বোঝা যায়। আমি বেশ নিশ্চিত যে কাজের ক্ষেত্র আছে, আপনার কি? নাকি আমি কিছু মিস করেছি?



... এবং উত্তর ও উত্তরগুলির এই উত্তরগুলি আমি যেভাবে করব তা হ'ল @ সোমন্ত্রা :-)
ভোরেটাক 7

@ ভোরেটাক 7, আমি বলেছিলাম এটি ছিল প্রৌ answer় উত্তর, কিন্তু আমি
পেডেন্টিক

উত্তর:


8

আপনি প্রতি বুধবার ক্রোন দ্বারা চালিত জিনিসটি রাখতে পারেন, তারপরে জিনিসটি চালিয়ে যেতে সিদ্ধান্ত নিন এটি একটি এমনকি সপ্তাহ বা বিজোড় সপ্তাহ কিনা। উদাহরণ স্বরূপ:

#!/bin/bash
week=$(date +%U)
if [ $(($week % 2)) == 0 ]; then 
    echo even week
else 
    echo odd week
fi

এটি একটি দুর্দান্ত সমাধান, তবে সত্যিই প্রশ্নের উত্তরটি নিজেই দেয় না - আমি বিষয়টিকে শিডিউল যুক্তি দিয়ে কলঙ্কিত না করা পছন্দ করব। সম্ভবত আমি @ সোমন্তর দেওয়া লিঙ্কটির সাথে এটি সংহত করতে পারি।
রোমান

ঠিক আছে, আমাকে অবশ্যই স্বীকার করতে হবে: এটি এখন পর্যন্ত সেরা সমাধান। @ সোমন্ত্রা যে লিঙ্কটি দিয়েছে তা একই ফলস্বরূপ জটিল জটিল আইএমএইচও অর্জন করেছে (ইউএনআইএক্স সময়ের সাথে গণনা), তবে একই স্টাইলে ক্রোনজব (স্ক্রিপ্টের পরিবর্তে) এর সাথে সরাসরি আপনার দৃষ্টিভঙ্গি যুক্ত করা এটিকে বেশ মার্জিত করে তোলে।
রোমান

এটি বছর 2020 এ বিরতি দেয় কারণ এতে 53 সপ্তাহ রয়েছে। উদাহরণস্বরূপ: যদি আপনার ক্রোনটি ৩১ শে ডিসেম্বর দ্বি-সাপ্তাহিক চালানোর জন্য নির্ধারিত ছিল, তবে এটি 31 ডিসেম্বর, 2020 (53 তম সপ্তাহ) এবং 4 জানুয়ারী, 2020 (প্রথম সপ্তাহ) এ চলবে।
mad_fox

4

অনেকগুলি ক্রোন (আপনি কোনটি ব্যবহার করছেন তা নির্দিষ্ট করেননি) সমর্থন ব্যাপ্তি। তাই কিছু

0 0 1-7,15-21 * 3

মাসের প্রথম এবং তৃতীয় বুধবার আঘাত করবে।


এটি "স্ক্রিপ্টে এটি করুন" পদ্ধতির চেয়ে কিছুটা মার্জিত, তবে আপনার ক্রোনটবটিতে একটি মন্তব্য যুক্ত করতে ভুলবেন না (থাম্বের সাধারণ নিয়ম: আপনার যদি একের বেশি থাকে -বা /জড়িত থাকে তবে শিডিয়ুলটি বর্ণনা করার জন্য এটি সম্ভবত মন্তব্য করার উপযুক্ত)
ভোরেটাক q

আমি সন্দেহ করি যে এটি ভুল; এটি কাজের জন্য প্রতিমাসের ১ ম -১ 7th তম এবং ১৫-২১ তারিখে এবং প্রতি বুধবারও চালিত করবে। এটি থেকে man 5 crontab: " কমান্ডের মৃত্যুদন্ডের দিনটি দুটি ক্ষেত্র দ্বারা নির্দিষ্ট করা যেতে পারে - মাসের দিন এবং সপ্তাহের দিন both উভয় ক্ষেত্র সীমাবদ্ধ থাকলে (যেমন হয় না *), কমান্ডটি চালানো হবে যখন উভয় ক্ষেত্রেই ক্ষেত্রের সাথে মেলে বর্তমান সময়। উদাহরণস্বরূপ, "30 4 1,15 * 5" প্রতি মাসের প্রথম এবং 15 তারিখ সকাল সাড়ে চারটায় একটি আদেশ কমান্ড চালায়, এবং প্রতি শুক্রবার "(আমার জোর)"।
ম্যাডহ্যাটার

1
প্রকৃতপক্ষে, এটি নির্ভর করে আপনি কোন ক্রোন ডেমন ব্যবহার করছেন। আপনার এন্ট্রি ভিক্সি ক্রোন থেকে মনে হয়েছে (রেডহ্যাট ডিস্ট্রোজে অন্তর্ভুক্ত)। ডিলোর ক্রোন (স্ল্যাকওয়্যার) এর "ম্যান ক্রোন্টাব" থেকে: আপনি যদি মাসে এবং সপ্তাহের একটি দিন উভয়ই নির্দিষ্ট করে থাকেন, * তবে এটি মাসের নবম দিন হিসাবে ব্যাখ্যা করা হবে। তবুও, একটি স্ক্রিপ্টযুক্ত সমাধান (সপ্তাহের সংখ্যা গণনা করা) একমাত্র পোর্টেবল সমাধানের মতো দেখায়।
AlvaroGMJ

2

এমন কিছুর জন্য যা প্রতি সপ্তাহে চালাতে হয় এই ওয়ান-লাইনারটি ব্যবহার করুন:

0 0 * * 5 [ `expr \`date +\%V\` \% 2` -eq 0 ] && echo "execute script" 

এই বিশেষ স্ক্রিপ্ট শুক্রবারে চলমান হবে। কার্যকর করা সপ্তাহটি "-eq 0" বা "-eq 1" ব্যবহার করে সামঞ্জস্য করা যেতে পারে


1

ক্রোকের সীমাবদ্ধতার জন্য অ্যানাক্রন একটি ভাল কাজ।

  • আনাক্রনের একটি পুনরাবৃত্তির প্যারামিটার রয়েছে যা আপনি 14 এ সেট করতে পারেন।

পিরিয়ড দেরি করে জব-আইডেন্টিফায়ার কমান্ড

14 15 টেস্ট.ডেইলি /পাথ / টু / স্ক্রিপ্ট.শ


দুর্ভাগ্যক্রমে, অ্যানক্রোন ব্যবহার করা যায় না। তা উল্লেখ করতে ভুলে গেছি।
রোমান

1

যদি আপনার প্রয়োজনগুলি আক্ষরিকভাবে দ্বি-সাপ্তাহিক না হয়, আপনি কেবল মাসের 1 ও 15 তারিখে ক্রোনজব চালাতে পারবেন:

15 8 1,15 * * /your/script.sh

যা সপ্তাহের দিন নির্বিশেষে প্রতি মাসের প্রথম এবং পনেরো তারিখ সকাল সোয়া আটটায় চলে।


-2

সেই ব্যাখ্যাটি থেকে সপ্তাহের মাঠে 3/2 সেটিংটি প্রতিটি বুধবারে টাস্কটি চালানো উচিত - এর অন্তর্নিহিত, তবে আমি মনে করি এটি করণীয়।


না, এটি সমান for(int i=3; i <=3 ; i+=2) {} যেহেতু এটি কেবল একবারই এটি চলেছে, "পদক্ষেপ" 1 বা 2 হয় কিনা তা
স্টু

@ স্টিও কি বলেছে। এছাড়াও, "সপ্তাহের ক্ষেত্র" নেই।
রোমান

সপ্তাহের ক্ষেত্রের দ্বারা, আমি বলতে চাই "সপ্তাহের মাঠের দিন"
জার্নিম্যান গীক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.