ক্রন্ড পাঁচ মিনিটের সময়সূচী অফসেট করে


22

প্রতি 5 মিনিটে একটি ক্রোন স্ক্রিপ্ট সেট অফসেট করা সম্ভব?

আমার দুটি স্ক্রিপ্ট রয়েছে, স্ক্রিপ্ট 1 একটি ডাটাবেস থেকে কিছু তথ্য সংগ্রহ করে এবং এটি অন্যটিতে সন্নিবেশ করায়, স্ক্রিপ্ট 2 এই ডেটা এবং প্রচুর অন্যান্য ডেটা বের করে এবং এ থেকে কিছু সুন্দর প্রতিবেদন তৈরি করে। উভয় স্ক্রিপ্ট প্রতি 5 মিনিটে চালানো প্রয়োজন। আমি এক মিনিটের মধ্যে স্ক্রিপ্ট 2 অফসেট করতে চাই যাতে এটি নতুন ডেটা থেকে একটি প্রতিবেদন তৈরি করতে পারে। ইজি আমি চাই স্ক্রিপ্টটি একটিতে :00, :05, :10, :15 [...]চালানো হোক এবং :01, :06, :11, :16 [...]প্রতিটি স্ক্রিপ্ট দুটি প্রতি ঘন্টা চলবে । স্ক্রিপ্টগুলি একে অপরের উপর নির্ভর করে না এবং স্ক্রিপ্ট 2 অবশ্যই স্ক্রিপ্টটি সফল হয়েছিল কিনা তা নির্বিশেষে চলতে হবে। তবে এটি কার্যকর হবে যদি প্রতিবেদনে সর্বশেষ ডেটা থাকতে পারে। ক্রোন দিয়ে এটি কি সম্ভব?

পোস্ট;
আমি শেল স্ক্রিপ্টে উভয় কমান্ড ব্যবহার করার বিষয়ে চিন্তা করেছি যাতে তারা একে অপরের সাথে সাথে সাথে চলে তবে এটি কার্যকর হবে না, কখনও কখনও স্ক্রিপ্ট 1 বাহ্যিক এপিআই ইত্যাদির জন্য অপেক্ষা করতে থাকে etc. তাই চালাতে 15 মিনিট সময় লাগতে পারে তবে স্ক্রিপ্ট 2 অবশ্যই প্রতি 5 মিনিটে চলতে হবে সুতরাং এইভাবে করা স্ক্রিপ্ট 2টির কার্য সম্পাদন বন্ধ / বিলম্ব করবে I আমি যদি ক্রোন এ এটি সেট করতে পারি তবে এর অর্থ হ'ল স্ক্রিপ্ট 2 যা স্ক্রিপ্ট 1 করছিল তা নির্বিশেষে চলবে

উত্তর:


14

আপনি যখনই ব্যবহার করতে চান স্ক্রিপ্টগুলি চালাতে পারেন cron। আপনি যদি প্রতি 5 মিনিটে 1 টি স্ক্রিপ্ট চালাতে চান তবে আপনি এটি শুরু করতে পারেন:

*/5 * * * * /path/to/script1

তবে এটি কেবল সংক্ষিপ্তভাবে:

0,5,10,15,20,25,30,35,40,45,50,55 * * * * /path/to/script1

আপনি যদি স্ক্রিপ্ট 1 এর এক মিনিটের পরে স্ক্রিপ্ট 2 চালাতে চান, আপনি এটি করতে পারেন:

1,6,11,16,21,26,31,36,41,46,51,56 * * * * /path/to/script2

আপনি এটি করতে পারেন:

*/5 * * * * /path/to/script1
*/5 * * * * /path/to/script2

এবং তারপরে স্ক্রিপ্ট 2 এর শুরুতে, এক মিনিটের জন্য ঘুমান:

sleep 60

4
স্ক্রিপ্টে নিজেই ঘুম লাগানো একটি কুশ্রী হ্যাক যা প্রম্পট থেকে হাত থেকে স্ক্রিপ্ট চালানোকে বেদনাদায়ক করে তোলে। ক্রন্টব প্রবেশের ঘুমের অংশ তৈরি করে হ্যাক করার একটি কম কুশল উপায় আছে তবে এর চেয়ে আরও মার্জিত উপায় হ'ল সঠিক ক্রন্টাব নোটেশন ব্যবহার করে কাজগুলি অফসেট করা, যা আপনার উত্তরটি স্পর্শ করে না।
কালেব

39

ক্রন্টাবের মিনিটের প্রবেশ ক্ষেত্রটি এমন একটি "বর্ধিত" অপারেটর গ্রহণ করে যা একটি ধরণের বিভ্রান্তিকর কারণ এটি দেখে মনে হচ্ছে এটি গাণিতিক "বিভাজক" অপারেটর হওয়া উচিত তবে তা নয়। আপনি প্রায়শই দেখতে পাবেন এটি নীচের মতো কিছু ব্যবহার করেছে। নোট করুন যে এটি এমন পাঁচটি দ্বারা বিভাজ্য সংখ্যাগুলি খুঁজে পাবে না বরং সেট থেকে প্রতিটি পঞ্চম আইটেম গ্রহণ করে:

 */5 * * * * command

এটি /5ক্রোনকে প্রতি পঞ্চম আইটেমটি ( ) মিনিটের 0-59 ( *) সেট থেকে মেলতে বলে তবে আপনি সেটটি এভাবে পরিবর্তন করতে পারেন:

 1-59/5 * * * * command

এটি 1-59 সেট থেকে প্রতিটি পঞ্চম আইটেমটি গ্রহণ করবে, আপনার কমান্ডটি 6, 11, 16, ইত্যাদি চালিয়ে যাবে etc.

আপনার যদি এক মিনিটেরও বেশি সূক্ষ্ম দানাদার অফসেটের প্রয়োজন হয় তবে আপনি আপনার ক্রোনটাবের অংশ হিসাবে স্লিপ কমান্ড ব্যবহার করে এটি হ্যাক করতে পারেন:

 */5 * * * * sleep 15 && command

এটি প্রতি পাঁচ মিনিটে আপনার কাজ চালায়, তবে কমান্ডটি 15 মিনিটের পরে 15 সেকেন্ড পর্যন্ত শুরু হয় না। সংক্ষিপ্ত চলমান কাজের জন্য যেখানে অন্য কিছু পরে কয়েক সেকেন্ড পরে থাকা সমস্ত পার্থক্য তৈরি করে তবে আপনি পুরো মিনিট দেরি হতে চান না, এটি একটি সহজ যথেষ্ট হ্যাক।


1
এটি গৃহীত উত্তরটির চেয়ে উত্তম উত্তর। ব্যাপ্তির মাধ্যমে অফসেট সেট করা ঘুমের চেয়ে অনেক বেশি পরিষ্কার।
এনডি গীক

11

আপনি + চিহ্ন সহ একটি সময় অফসেট নির্দেশ করতে পারেন। উদাহরণস্বরূপ, চালানো :01, :06, :11, :16 [...], যেমন একটি টাস্ক তৈরি করুন

*/5+1 * * * * command

7
এটি ক্রোন
jhoff

1
আপনি ক্রোনটির কোন সংস্করণ ব্যবহার করছেন যা এই সিনট্যাক্সটিকে সমর্থন করে? ক্রনি মনে হয় এটি সমর্থন করে না।
ম্যাথু জি

CentOS7 এ আমার ক্রোনী রয়েছে, তাই প্রথমে আমি এই সমাধানটি চেষ্টা করব না।
অ্যানি দ্য অ্যাজিল

1

এটি আমার পক্ষে কাজ করেছে:

1/5 * ? * * *

যেখানে 1 অফসেট মিনিট। সুতরাং আপনি যদি তিন মিনিট অফসেট করতে চান:

3/5 * ? * * *

আমার এডব্লিউএস শিডিউল সেটিংসে এটি কাজ করছে

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