দেখছেন: বাংলা ইংরেজিতে দেখুন

Cron এক্সপ্রেশন ব্যাখ্যাকারী

একটি cron এক্সপ্রেশন পেস্ট করুন এবং সরল ইংরেজি ব্যাখ্যা পান। standard 5-ফিল্ড ও 6-ফিল্ড (সেকেন্ডসহ) cron ফরম্যাট সমর্থন করে।

উদাহরণ (চেষ্টা করতে ক্লিক করুন)

  1. উপরের ইনপুটে একটি cron এক্সপ্রেশন টাইপ বা পেস্ট করুন।
  2. নিচে প্রদর্শিত সরল ইংরেজি ব্যাখ্যাটি পড়ুন।
  3. যেকোনো উদাহরণ চিপে ক্লিক করুন এটিকে ইনপুটে ফেলতে এবং ডিকোড হতে দেখতে।
  4. লাল রঙে দেখানো যেকোনো পার্স ত্রুটি ঠিক করুন এবং আপনার উদ্দেশ্যের সাথে ব্যাখ্যা মিলে না যাওয়া পর্যন্ত পুনরাবৃত্তি করুন।
এটি কী করে?

ব্যাখ্যাকারী একটি standard Unix cron এক্সপ্রেশন (5 ফিল্ড) বা সেকেন্ডসহ Quartz-স্টাইল এক্সপ্রেশন (6 ফিল্ড) নেয় এবং "At 09:00 AM, Monday through Friday"-এর মতো একটি মানব বর্ণনা ফেরত দেয়। এটি সাধারণ অপারেটর — *, ",", - এবং / — এবং নামযুক্ত মাস (JAN-DEC) ও নামযুক্ত সপ্তাহের দিন (SUN-SAT) সহ সমর্থন করে। প্রতিটি কীস্ট্রোকে ফলাফল আপডেট হয়, তাই আপনি দ্রুত একটি এক্সপ্রেশনে পুনরাবৃত্তি করতে পারেন।

উদাহরণ

একটি সাধারণ ব্যবসায়িক-ঘন্টার জব:

0 9 * * MON-FRI

ডিকোড করা:

At 09:00 AM, Monday through Friday

সেকেন্ডসহ আরও নির্দিষ্ট একটি 6-ফিল্ড Quartz এক্সপ্রেশন:

0 30 2 ? * MON

ডিকোড করা (প্রতি সোমবার 02:30:00-এ)।

Cron ফরম্যাট

┌───────── মিনিট (0 - 59)
│ ┌─────── ঘন্টা (0 - 23)
│ │ ┌───── মাসের দিন (1 - 31)
│ │ │ ┌─── মাস (1 - 12, বা JAN-DEC)
│ │ │ │ ┌─ সপ্তাহের দিন (0 - 6, বা SUN-SAT; 0 এবং 7 উভয়ই রবিবার বোঝায়)
│ │ │ │ │
* * * * *

cron "0 0 * * *" কেন UTC মধ্যরাতে চালু হয়, আমার স্থানীয় সময়ে নয়?

বেশিরভাগ বাস্তব cron বাগ কয়েকটি পুনরাবৃত্ত ফাঁদে পড়ে:

  • টাইমজোন ড্রিফট। 0 0 * * * শিডিউলারের টাইমজোনে মধ্যরাতে চালু হয়। Kubernetes CronJobs এবং GitHub Actions-এ এটি ডিফল্টভাবে UTC — spec.timeZone সেট করুন বা নিজেই ঘন্টাকে UTC-তে রূপান্তর করুন।
  • 5-ফিল্ড বনাম 6-ফিল্ড অসঙ্গতি। 0 0 9 * * MON-FRI (6 ফিল্ড) কে 5-ফিল্ড শিডিউলারে পেস্ট করলে প্রথম 0 কে মিনিট এবং 0 কে ঘন্টা হিসেবে পড়ে, তাই জবটি মধ্যরাতে চালু হয়, 09:00-এ নয়।
  • মাসের দিন এবং সপ্তাহের দিন একসাথে। 0 0 15 * MON 15 তারিখে এবং প্রতি সোমবার চলে — কেবল সেই সোমবারে নয় যা 15 তারিখে পড়ে। এটি Vixie-cron-এর OR সেমান্টিক্স।
  • ডিপ্লয়ে Step পুনরায় শুরু হয় না। */10 * * * * ঘড়িতে :00, :10, :20, :30, :40, :50-এ চালু হয় — আপনার শেষ ডিপ্লয়ের দশ মিনিট পরে নয়।
  • standard cron-এ ? ব্যবহার করা। ? প্লেসহোল্ডার একটি Quartz এক্সটেনশন। Unix cron এটি প্রত্যাখ্যান করে — পরিবর্তে * ব্যবহার করুন।
  • সপ্তাহের দিন 0 বনাম 7। ক্লাসিক cron-এ উভয়ই রবিবার বোঝায়, কিন্তু কিছু পার্সার (পুরানো BSD) কেবল 0 গ্রহণ করে। পোর্টেবিলিটি গুরুত্বপূর্ণ হলে SUN ব্যবহার করুন।

অপারেটর

  • * — যেকোনো মান
  • , — মানের তালিকা (যেমন MON,WED,FRI)
  • - — পরিসর (যেমন 1-5)
  • / — স্টেপ মান (যেমন */15 = প্রতি 15)
প্রায়শই জিজ্ঞাসিত প্রশ্ন

5-ফিল্ড এবং 6-ফিল্ড cron-এর মধ্যে পার্থক্য কী?

Standard POSIX cron-এ 5টি ফিল্ড আছে: মিনিট, ঘন্টা, মাসের দিন, মাস, সপ্তাহের দিন। 6-ফিল্ড ভেরিয়েন্ট একটি সেকেন্ড ফিল্ড সামনে যোগ করে এবং Quartz, Spring @Scheduled, এবং অনেক Node cron লাইব্রেরি দ্বারা ব্যবহৃত হয়। একটি 6-ফিল্ড এক্সপ্রেশন যেমন "0 0 9 * * MON-FRI" সপ্তাহের দিনগুলিতে 9:00:00-এ চালু হয়, যখন 5-ফিল্ড "0 9 * * MON-FRI" 9:00-এ চালু হয়।

এটি কি L, W, এবং # এর মতো Quartz এক্সটেনশন সমর্থন করে?

এই ব্যাখ্যাকারী সাধারণ Unix / Vixie cron উপভাষা এবং ঐচ্ছিক প্রথম সেকেন্ড ফিল্ড সমর্থন করে। Quartz-কেবল টোকেন (L শেষের জন্য, W সপ্তাহের দিনের জন্য, # n-তম সপ্তাহের দিনের জন্য, এবং ? প্লেসহোল্ডার) standard cron-এর অংশ নয় এবং পার্স করার নিশ্চয়তা নেই। আপনি যদি এগুলোর উপর নির্ভর করেন, এক্সপ্রেশন যাচাই করতে শিডিউলার-নির্দিষ্ট ডকুমেন্টেশন ব্যবহার করুন।

0 0 * * * আমি যা প্রত্যাশা করি তার চেয়ে ভিন্ন সময়ে কেন চালু হয়?

Cron এক্সপ্রেশনের কোনো টাইমজোন নেই। জবটি মেশিন বা কন্টেইনারের টাইমজোনে মধ্যরাতে চলে যা শিডিউলারের মালিক। Kubernetes CronJobs, GitHub Actions, এবং AWS EventBridge-এ এটি ডিফল্টভাবে UTC। যদি আপনি স্থানীয় মধ্যরাত চান, শিডিউলার টাইমজোন স্পষ্টভাবে সেট করুন (CronJob-এ spec.timeZone, TZ এনভায়রনমেন্ট ভেরিয়েবল, cron.yaml timezone কী)।

আমি কি মাসের দিন এবং সপ্তাহের দিন একত্রিত করতে পারি?

Standard Vixie cron-এ, যদি মাসের দিন এবং সপ্তাহের দিন উভয়ই সীমাবদ্ধ থাকে, জবটি যখনই যেকোনো একটি মেলে তখনই চালু হয় — এটি একটি OR, AND নয়। তাই "0 0 15 * MON" প্রতি মাসের 15 তারিখে এবং প্রতি সোমবার চলে। Quartz এটি উল্টো করে এবং দ্ব্যর্থতা নিরসনের জন্য একটি ফিল্ডকে "?" হওয়ার প্রয়োজনীয় হিসেবে বিবেচনা করে।

স্টেপ মান কীভাবে কাজ করে?

একটি স্টেপ রেঞ্জ/স্টেপ সিনট্যাক্স ব্যবহার করে। "*/15 * * * *" :00 থেকে শুরু করে প্রতি 15 মিনিটে চালু হয়। মিনিট ফিল্ডের ভিতরে "10-50/20" :10, :30, :50-এ চালু হয়। স্টেপ মানে "এখন থেকে প্রতি N" নয় — সীমানা সর্বদা পরিসরের শুরুতে সারিবদ্ধ, তাই বর্তমান সময়ের সাথে স্টেপ সরে যাওয়ার আশা করবেন না।

আপনি কি এখানে আমার পরীক্ষা করা cron এক্সপ্রেশন সংরক্ষণ করেন?

না। আপনি টাইপ করা এক্সপ্রেশনগুলির কোনো রেকর্ড আমরা রাখি না। আপনি যা পেস্ট বা পরীক্ষা করেন তা পৃষ্ঠা বন্ধ বা রিফ্রেশ করার সাথে সাথে বাতিল হয় — কোনো লগ নেই, আপনি যে শিডিউলে কাজ করেন তার উপর কোনো অ্যানালিটিক্স নেই। অতিরিক্ত আশ্বাস চাইলে আপনি আপনার ব্রাউজারের developer tools চেক করতে পারেন।