§

একটি cron এক্সপ্রেশন প্রবেশ করান বা নিচে থেকে প্রিসেট নির্বাচন করুন।

দ্রুত প্রিসেট:
§

পরবর্তী ১০টি রান টাইম

cron

মানব-পাঠযোগ্য শিডিউল এখানে আসবে...

    §

    এক্সপ্রেশন বিল্ডার

    বাংলাদেশ ও পশ্চিমবঙ্গের DevOps ইঞ্জিনিয়ার এবং ব্যাকএন্ড ডেভেলপাররা AWS Lambda ট্রিগার, Kubernetes CronJob এবং GitHub Actions ওয়ার্কফ্লোতে cron সিনট্যাক্স ব্যবহার করেন। UTC এবং বাংলাদেশ স্ট্যান্ডার্ড সময়ের (UTC+6) পার্থক্যের কারণে স্থানীয় সময়ে শিডিউল যাচাই করা গুরুত্বপূর্ণ — এই টুল আপনার নির্বাচিত IANA টাইমজোনে পরবর্তী ১০টি রান সময় দেখায়।

    Cron এক্সপ্রেশন কী?

    একটি cron এক্সপ্রেশন একটি কম্প্যাক্ট শিডিউলিং স্ট্রিং যা একটি জব শিডিউলারকে ঠিক কখন একটি টাস্ক ফায়ার করতে হবে তা বলে। ফরম্যাটটি ১৯৭৫ সালে Unix V7 cron ডেমনের ভেতরে জন্মেছিল এবং তখন থেকে খুব কমই পরিবর্তিত হয়েছে — একই পাঁচ-ফিল্ড গ্রামার আজ Kubernetes CronJobs, AWS EventBridge, GitHub Actions ওয়ার্কফ্লো, Google Cloud Scheduler, GitLab CI, Jenkins পাইপলাইন এবং প্রতিটি Linux ডিস্ট্রিবিউশনের সাথে শিপ করা crontab বাইনারিতে দেখা যায়।

    Cron এক্সপ্রেশন কীভাবে কাজ করে?

    একটি স্ট্যান্ডার্ড cron এক্সপ্রেশনে পাঁচটি স্পেস-বিভক্ত ফিল্ড রয়েছে যা একসাথে একটি পুনরাবৃত্ত শিডিউল নির্ধারণ করে। ইঞ্জিন প্রতি মিনিটে বর্তমান ওয়াল ক্লকের সাথে এক্সপ্রেশন পরীক্ষা করে এবং পাঁচটি ফিল্ড মিলে গেলে জব ফায়ার করে। ফিল্ডগুলো বাম থেকে ডানে:

    1. মিনিট (0–59)। ঘন্টার মধ্যে কোন মিনিটে জব চলে। 0 মানে ঘন্টার শুরুতে, 30 মানে অর্ধ ঘন্টায়, */5 মানে প্রতি পাঁচ মিনিটে (00, 05, 10, ...), এবং 15,45 মানে পনেরো মিনিট পর ও পনেরো মিনিট আগে।
    2. ঘন্টা (0–23)। ২৪ ঘন্টার ঘড়িতে দিনের কোন ঘন্টায়। 0 মধ্যরাত, 9 সকাল ৯টা, 17 বিকাল ৫টা। রেঞ্জ (9-17 ব্যবসার ঘন্টার জন্য) এবং স্টেপ ভ্যালু (*/2 প্রতি অন্য ঘন্টার জন্য) মিনিটের মতোই কাজ করে।
    3. মাসের দিন (1–31)। কোন ক্যালেন্ডার দিনে চলবে। 1 মানে মাসের ১ তারিখ, * মানে প্রতিদিন, 1,15 মানে ১ এবং ১৫ তারিখ। 31 নিয়ে সাবধান — ৩১ দিন নেই এমন মাসগুলো নীরবে এড়িয়ে যায়।
    4. মাস (1–12 বা JAN–DEC)। কোন মাসগুলোতে চলবে। * মানে প্রতি মাসে, 1,7 মানে জানুয়ারি ও জুলাই, 1-3 মানে শুধু Q1। বেশিরভাগ ইমপ্লিমেন্টেশনে তিন-অক্ষরের মাসের নাম কেস-ইনসেন্সিটিভ।
    5. সপ্তাহের দিন (0–7, যেখানে 0 এবং 7 উভয়ই রবিবার মানে)। নির্দিষ্ট সপ্তাহের দিনে ফায়ারিং সীমাবদ্ধ করে। 1-5 সোমবার থেকে শুক্রবার, 0,6 সাপ্তাহান্ত, MON-FRI বেশিরভাগ পার্সারে কাজ করে। যখন মাসের দিন এবং সপ্তাহের দিন উভয়ই নির্দিষ্ট মানে সেট করা হয়, ক্লাসিক cron উভয় মিলে গেলে ফায়ার করে (লজিক্যাল OR), যা প্রতিবারই মানুষকে অবাক করে।

    কেন cron এক্সপ্রেশন পার্সার ব্যবহার করবেন?

    • ডিপ্লয়ের আগে নীরব ভুল ধরুন। `0 2 */3 * *` এক্সপ্রেশন প্রতি তিন মিনিটে নয়, প্রতি তৃতীয় দিন রাত ২টায় ফায়ার করে — এখানে পেস্ট করুন এবং প্রোডাকশনে পাঠানোর আগে সরল বাংলায় দেখুন।
    • বেশিরভাগ ক্লাউড শিডিউলার ডিফল্টরূপে UTC-তে চলে। আপনার স্থানীয় জোনে পরবর্তী দশটি ফায়ার টাইম প্রিভিউ করা রাত ৩টায় কাউকে পেজ করার আগে ঘড়ির ঘন্টার DST ড্রিফট প্রকাশ করে।
    • `@daily`, `@weekly` এবং `@monthly`-র মতো শর্টকাট সুবিধাজনক কিন্তু অস্পষ্ট। পার্সার আপনাকে অন্তর্নিহিত পাঁচ-ফিল্ড ফর্ম দেখায় যাতে আপনি ঠিক কী শিডিউল করা হয়েছে তা জানেন।
    • ফিল্ড-বাই-ফিল্ড বিল্ডার আপনাকে একটি সময়ে একটি কলাম করে শিডিউল রচনা করতে এবং মানব বিবরণ লাইভ আপডেট দেখতে দেয়, যা দশমবারের জন্য cron ম্যান পেজ পুনরায় পড়ার চেয়ে অনেক দ্রুত।

    Cron এক্সপ্রেশন কোথায় ব্যবহৃত হয়?

    Cron সিনট্যাক্স যেকোনো জায়গায় দেখা যায় যেখানে একটি জব একটি ঘড়িতে পুনরাবৃত্তি করতে হয়। তিনটি সবচেয়ে সাধারণ পৃষ্ঠ, প্রতিটির বিখ্যাত সমস্যা সহ:

    • ব্যাকআপ শিডিউল। ক্লাসিক `crontab -e` এন্ট্রি যা রাতে ২টায় ডেটাবেস S3-এ ডাম্প করে, বা প্রতি মাসের ১ তারিখে `pg_dump` আর্কাইভ রোটেট করে। `0 2 * * * /usr/local/bin/backup.sh`-এর মতো একটি লাইন ইতিহাসের যেকোনো অন্য cron লাইনের চেয়ে বেশি Linux সার্ভারে শিপ হয়েছে।
    • GitHub Actions `schedule` ট্রিগার। `.github/workflows/*.yml`-এ `on.schedule.cron` কী স্ট্যান্ডার্ড পাঁচ-ফিল্ড cron গ্রহণ করে, কিন্তু জব সবসময় UTC-তে চলে। সাধারণ প্যাটার্ন: `cron: '0 9 * * 1-5'` সোমবার-শুক্রবার সকাল ৯টা UTC-তে একটি ডাইজেস্ট পাঠাতে। প্রথমে এখানে আপনার স্থানীয় জোনে প্রিভিউ করুন।
    • AWS EventBridge Scheduler। EventBridge cron এক্সপ্রেশন বছরের জন্য একটি ষষ্ঠ ফিল্ড নেয় এবং মাসের দিন বা সপ্তাহের দিন ফিল্ডে `*`-এর পরিবর্তে `?` প্রয়োজন — `cron(0 9 ? * MON-FRI *)` হলো ক্লাসিক সপ্তাহের দিন সকাল ৯টার স্ট্যান্ডার্ড cron-এর EventBridge অনুবাদ।

    একটি বাস্তব cron এক্সপ্রেশন কেমন দেখায়?

    0 9 * * 1-5 নিন — প্রতিটি সপ্তাহের দিন সকাল ৯:০০ টায় ফায়ার করে। ফিল্ডগুলো বাম থেকে ডানে পড়ুন: 0 ঘন্টার শূন্য মিনিট, 9 ২৪ ঘন্টার ঘড়িতে সকাল ৯টা, মাসের দিনে * মানে প্রতিটি ক্যালেন্ডার দিন, মাসে * মানে প্রতি মাস, এবং সপ্তাহের দিনে 1-5 সোমবার থেকে শুক্রবারে ফায়ারিং সীমাবদ্ধ করে। উপরের ইনপুটে পেস্ট করুন এবং পার্সার আপনার নির্বাচিত IANA জোনে পরবর্তী দশটি ফায়ার তারিখ সহ নিশ্চিত করে। AWS EventBridge সিনট্যাক্সে একই অভিপ্রায় হলো cron(0 9 ? * MON-FRI *) — শেষে বছরের ফিল্ড এবং যেখানে স্ট্যান্ডার্ড cron * ব্যবহার করত সেখানে ? লক্ষ্য করুন।

    Cron এক্সপ্রেশন ঠিক একটি উপায়ে অক্ষমাশীল: একটি টাইপো আপনাকে একটি সিনট্যাক্টিক্যালি বৈধ শিডিউল দেয় যা ভুল সময়ে ফায়ার করে, কোড রিভিউতে কোনো ত্রুটি ছাড়াই। উপরের পার্সার সেই অনুশীলনকে একটি দশ-সেকেন্ডের নিশ্চয়তা পরীক্ষায় পরিণত করে — এক্সপ্রেশন পেস্ট করুন, বাংলায় পড়ুন, আপনার স্থানীয় জোনে পরবর্তী দশটি ফায়ার টাইম স্ক্যান করুন এবং YAML পাঠান জেনে যে cron লাইন আসলে কমিট মেসেজ যা বলে তা করে।

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

    পাঁচ-ফিল্ড cron হলো এক-মিনিট রেজোলিউশন সহ ক্লাসিক Unix গ্রামার। ছয়-ফিল্ড cron সাব-মিনিট শিডিউলিংয়ের জন্য একটি লিডিং সেকেন্ড কলাম যোগ করে — Quartz এবং Spring-এর @Scheduled দ্বারা ব্যবহৃত। AWS EventBridge-ও ছয়টি ফিল্ড ব্যবহার করে, কিন্তু এর অতিরিক্ত কলাম সেকেন্ড নয়, একটি ট্রেইলিং বছর।

    @hourly, @daily এবং @weekly কী মানে?

    ১৯৮৭ সালে Vixie-cron-এ পরিচিত ডাকনাম। @hourly = 0 * * * *, @daily = 0 0 * * *, @weekly = 0 0 * * 0, @monthly = 0 0 1 * *, @yearly = 0 0 1 1 *@reboot বুটে একবার ফায়ার করে। GitHub Actions এবং EventBridge এই অ্যালিয়াস প্রত্যাখ্যান করে।

    Cron-এ রবিবার কি দিন 0 নাকি দিন 7?

    ক্লাসিক Vixie cron-এ উভয়ই — 0 এবং 7 গৃহীত হয় যাতে 5-7-এর মতো রেঞ্জ শুক্রবার-রবিবার হিসেবে স্বাভাবিকভাবে পড়া যায়। সোমবার সবসময় 1, শনিবার সবসময় 6। Quartz এবং AWS EventBridge ভিন্ন কনভেনশন ব্যবহার করে: 1-7 যেখানে রবিবার 1

    Cron ডেলাইট সেভিং টাইম কীভাবে পরিচালনা করে?

    ইঞ্জিনের টাইমজোনের উপর নির্ভর করে। UTC-তে (EventBridge, Kubernetes এবং GitHub Actions-এর ডিফল্ট) DST বিদ্যমান নেই। একটি স্থানীয় DST জোনে, ক্লাসিক Vixie cron স্প্রিং-ফরোয়ার্ড গ্যাপের সময় জব এড়িয়ে যায় এবং ফল-ব্যাকের সময় দুবার চালায়; systemd টাইমার ঠিক একবার ফায়ার করে।