Cron এক্সপ্রেশন পার্সার কী?
Cron হলো Unix/Linux cron জব, CI/CD পাইপলাইন, Kubernetes CronJobs এবং অগণিত টাস্ক শিডিউলারে ব্যবহৃত প্রমিত শিডিউলিং সিনট্যাক্স। একটি cron এক্সপ্রেশন একটি সম্পূর্ণ পুনরাবৃত্তি সময়সূচি পাঁচটি সংক্ষিপ্ত ফিল্ডে প্রকাশ করে, যা শক্তিশালী কিন্তু এক নজরে পড়া কঠিন — "0 */4 * * 1-5" কি প্রতি ৪ ঘণ্টায় কর্মদিবসে চলে, নাকি কিছু সম্পূর্ণ ভিন্ন?
এই পার্সারটি একটি cron এক্সপ্রেশনকে ফিল্ড অনুযায়ী বিশ্লেষণ করে এবং সাধারণ ইংরেজি বাক্যে অনুবাদ করে, যাতে আপনি এটি ডিপ্লয় করার আগে সময়সূচি সঠিক কিনা যাচাই করতে পারেন, অথবা cron সিনট্যাক্স টেবিল না দেখেই অন্য কারও লেখা সময়সূচি দ্রুত বুঝতে পারেন।
এই ক্যালকুলেটর কখন ব্যবহার করবেন
- নির্ধারিত টাস্ক বা CI/CD পাইপলাইন স্থাপনের আগে একটি cron সময়সূচি যাচাই করার সময়
- একটি নির্ধারিত কাজ অপ্রত্যাশিত সময়ে চলেছে বা চলেনি — সেটি ডিবাগ করার সময়
- একটি Kubernetes CronJob বা GitHub Actions সময়সূচি পর্যালোচনা করার সময় যা একজন সহকর্মী লিখেছেন
- সিসঅ্যাডমিন বা DevOps সার্টিফিকেশন কোর্সের জন্য cron সিনট্যাক্স শেখার সময়
- সার্ভার মাইগ্রেশনের সময় বিদ্যমান crontab এন্ট্রি অডিট করার সময়
- একটি জটিল সময়সূচির প্যাটার্ন ডিজাইন করার সময় যা একাধিক সময়ের সীমাবদ্ধতা একত্রিত করে
ধাপসমূহ:
- ইনপুটে একটি ৫-ফিল্ড cron এক্সপ্রেশন পেস্ট বা টাইপ করুন।
- প্রতিটি ফিল্ড আলাদাভাবে তার অর্থসহ দেখুন।
- সম্পূর্ণ সময়সূচির সহজ ভাষার অনুবাদ পড়ুন।
- "প্রতি ঘণ্টায়" বা "কর্মদিবসে সকাল ৯টায়"-এর মতো সাধারণ সময়সূচির জন্য একটি প্রিসেট বাটন চেষ্টা করুন।
সূত্র
┌───────────── মিনিট (0-59)
│ ┌───────────── ঘণ্টা (0-23)
│ │ ┌───────────── মাসের দিন (1-31)
│ │ │ ┌───────────── মাস (1-12)
│ │ │ │ ┌───────────── সপ্তাহের দিন (0-6, রবিবার=0)
│ │ │ │ │
* * * * *
ব্যবহারের ক্ষেত্র
- একটি নির্ধারিত টাস্ক বা CI/CD পাইপলাইন স্থাপনের আগে cron সময়সূচি যাচাই করা
- সহকর্মীর লেখা একটি Kubernetes CronJob বা সার্ভারলেস নির্ধারিত ফাংশন বোঝা
- একটি নির্ধারিত কাজ অপ্রত্যাশিত সময়ে কেন চলেছে (বা চলেনি) তা ডিবাগ করা
- সিসঅ্যাডমিন বা DevOps কোর্সের জন্য cron সিনট্যাক্স শেখা
- সার্ভার মাইগ্রেশনের সময় বিদ্যমান crontab এন্ট্রি অডিট করা
প্রধান সুবিধাসমূহ
- দুর্বোধ্য cron সিনট্যাক্সকে তাৎক্ষণিকভাবে সহজ ভাষায় অনুবাদ করে
- স্পষ্টতার জন্য ৫টি ফিল্ডের প্রতিটি আলাদাভাবে ভেঙে দেখায়
- সবচেয়ে সাধারণ সময়সূচির প্যাটার্নের জন্য এক-ক্লিক প্রিসেট
- সাইন-আপের প্রয়োজন নেই, সম্পূর্ণভাবে আপনার ব্রাউজারে চলে
প্রো টিপস
- সন্দেহ থাকলে, সময়সূচিটি প্রত্যাশিতভাবে চালু হচ্ছে কিনা তা নিশ্চিত করতে প্রথমে খুব নিকট ভবিষ্যতের একটি সময় দিয়ে পরীক্ষা করুন
- যখন সম্ভব, পঠনযোগ্যতার জন্য কমা দিয়ে প্রতিটি মান তালিকাভুক্ত করার পরিবর্তে রেঞ্জ (1-5) ব্যবহার করুন
- আপনার সার্ভার বা শিডিউলারের টাইমজোন সেটিং দুবার পরীক্ষা করুন — এটি cron-এ "ভুল সময়" এর সবচেয়ে সাধারণ উৎস
- সাধারণ দৈনিক/সাপ্তাহিক সময়সূচির চেয়ে জটিল যেকোনো কিছুর জন্য, স্থাপনার আগে সহজ ভাষার বর্ণনা লিখে আপনার উদ্দেশ্যের সাথে তুলনা করুন
এড়ানোর সাধারণ ভুলসমূহ
- ভুলে যাওয়া যে মাসের দিন এবং সপ্তাহের দিন OR লজিকে একত্রিত হয়, AND লজিকে নয়
- 0-ইনডেক্স করা সপ্তাহের দিন (0=রবিবার) অন্যান্য সিস্টেমের 1-ইনডেক্স করা প্রথার সাথে গুলিয়ে ফেলা
- মাসের দিন ফিল্ডে */7 মানে "প্রতি ৭ দিনে" বলে ধরে নেওয়া — আসলে এর অর্থ হলো 1, 8, 15, 22, 29 দিন, যা প্রতি মাসে নতুন করে শুরু হয়
- ভুলে যাওয়া যে বেশিরভাগ cron ইমপ্লিমেন্টেশন সার্ভারের স্থানীয় টাইমজোনে চলে, UTC বা ব্যবহারকারীর টাইমজোনে নয়
মূল শব্দ ব্যাখ্যা
- Cron: Unix-জাতীয় অপারেটিং সিস্টেমে ব্যবহৃত একটি সময়-ভিত্তিক জব শিডিউলার
- Crontab: cron জবের একটি তালিকা সংজ্ঞায়িত করতে ব্যবহৃত ফাইল বা কমান্ড
- স্টেপ ভ্যালু (Step value): "/N" সিনট্যাক্স, যার অর্থ ফিল্ডের সর্বনিম্ন মান থেকে শুরু করে "প্রতি N ইউনিটে"
- CronJob: cron-নির্ধারিত টাস্ক চালানোর জন্য Kubernetes-এর নেটিভ রিসোর্স
সম্পর্কিত ধারণা
- সময় পার্থক্য ক্যালকুলেটর: দুটি তারিখ এবং সময়ের মধ্যে সময়কাল গণনা করুন
- দিন বাকি ক্যালকুলেটর: একটি নির্দিষ্ট তারিখ পর্যন্ত দিন গণনা করুন
- ইউনিক্স টাইমস্ট্যাম্প কনভার্টার: ইউনিক্স টাইমস্ট্যাম্প এবং তারিখের মধ্যে রূপান্তর করুন
- টাইমজোন ওভারল্যাপ ক্যালকুলেটর: টাইমজোন জুড়ে কাজের সময়ের ওভারল্যাপ খুঁজুন
- JSON ফর্ম্যাটার: JSON ডেটা ফর্ম্যাট এবং যাচাই করুন
উদাহরণ
"0 9 * * 1-5" এক্সপ্রেশনটি এভাবে ভাঙা হয়: মিনিট=0, ঘণ্টা=9, মাসের প্রতিটি দিন, প্রতিটি মাস, সোমবার থেকে শুক্রবার — অর্থাৎ "সোমবার থেকে শুক্রবার, সকাল 09:00টায়"।
আপনার ফলাফলের ব্যাখ্যা
পার্সারটি একটি ৫-ফিল্ড cron এক্সপ্রেশনকে তার পৃথক উপাদানে ভেঙে প্রতিটিকে সহজ ইংরেজিতে অনুবাদ করে। পাঁচটি ফিল্ড হলো: মিনিট (0-59), ঘণ্টা (0-23), মাসের দিন (1-31), মাস (1-12), এবং সপ্তাহের দিন (0-6, যেখানে 0 হলো রবিবার)। যখন সবগুলো ফিল্ড বর্তমান সময়ের সাথে মিলে যায়, তখন একটি কাজ চলে — এটি ফিল্ডগুলোর মধ্যে AND লজিক।
বিশেষভাবে মাসের দিন এবং সপ্তাহের দিনের মধ্যে মিথস্ক্রিয়তা লক্ষ্য করুন, যা OR লজিক ব্যবহার করে (AND নয়)। দিন 15 এবং সপ্তাহের দিন 5 দিয়ে নির্ধারিত একটি কাজ প্রতি মাসের 15 তারিখেও এবং প্রতি শুক্রবারেও চলবে — শুধুমাত্র 15 তারিখে পড়া শুক্রবারে নয়। এটি সময়সূচি বাগের একটি সাধারণ কারণ।

