ক্রন এক্সপ্রেশন জেনারেটর ও পার্সার
যেকোনো ক্রন এক্সপ্রেশন পেস্ট করুন এবং তা সহজ বাংলায় ব্যাখ্যা করা অবস্থায়, পরবর্তী রান সময়সহ দেখুন, বা
নিচের ড্রপডাউন থেকে একটি তৈরি করুন। রেঞ্জ, স্টেপ, তালিকা, মাস/সপ্তাহ-দিনের নাম এবং
@daily-শৈলীর ম্যাক্রো — সবই সমর্থিত। সবকিছু আপনার ব্রাউজারে চলে — কিছুই আপলোড হয় না।
Every 15 minutes.
ড্রপডাউন থেকে তৈরি করুন
এই টুলটি কীভাবে কাজ করে
বক্সে কোনো ক্রন এক্সপ্রেশন টাইপ বা পেস্ট করুন এবং টাইপ থামানোর মুহূর্তেই তা পার্স করা হয়: পাঁচটি ফিল্ড ভ্যালিডেট হয়, একটি পঠনযোগ্য বাক্যে অনূদিত হয়, এবং জব যে আসন্ন সময়গুলোতে চলবে তা গণনায় ব্যবহৃত হয় — সবই আপনার ব্রাউজারে, কোনো সার্ভার রাউন্ড-ট্রিপ ছাড়াই। শুরু থেকে তৈরি করতে চান? ড্রপডাউন থেকে তৈরি করুন খুলুন, একটি ফ্রিকোয়েন্সি বেছে নিন, এবং আপনার জন্য একটি বৈধ এক্সপ্রেশন বক্সে লিখে দেওয়া হয়। প্রিসেট বোতামগুলো সবচেয়ে সাধারণ শিডিউল এক ক্লিকে পূরণ করে।
পাঁচটি ক্রন ফিল্ড
| অবস্থান | ফিল্ড | অনুমোদিত মান | বিশেষ অক্ষর |
|---|---|---|---|
| 1 | মিনিট | 0–59 | * , - / |
| 2 | ঘণ্টা | 0–23 | * , - / |
| 3 | মাসের দিন | 1–31 | * , - / |
| 4 | মাস | 1–12 বা JAN–DEC | * , - / |
| 5 | সপ্তাহের দিন | 0–7 বা SUN–SAT (0 ও 7 = রবিবার) | * , - / |
বিশেষ অক্ষর
| প্রতীক | অর্থ | উদাহরণ |
|---|---|---|
* | ফিল্ডের প্রতিটি মান। | ঘণ্টা ফিল্ডে * = প্রতি ঘণ্টা |
, | নির্দিষ্ট মানের একটি তালিকা। | 1,15,30 = মিনিট 1, 15 ও 30-এ |
- | মানের একটি অন্তর্ভুক্ত রেঞ্জ। | ঘণ্টায় 9-17 = সকাল 9 থেকে বিকেল 5 পর্যন্ত |
/ | একটি স্টেপ — রেঞ্জের শুরু থেকে "প্রতি n"। | */15 = প্রতি 15 মিনিট; 5/20 = 5, 25, 45 |
সাধারণ ক্রন এক্সপ্রেশন
| এক্সপ্রেশন | অর্থ |
|---|---|
*/15 * * * * | প্রতি 15 মিনিটে |
0 * * * * | প্রতি ঘণ্টার শুরুতে |
30 2 * * * | প্রতিদিন 02:30-এ |
0 9 * * 1-5 | কর্মদিবসে (সোম–শুক্র) 09:00-এ |
0 0 1 * * | প্রতি মাসের ১ তারিখে মধ্যরাতে |
0 0 * * 0 | প্রতি রবিবার মধ্যরাতে |
0 22 * * 1-5 | কর্মদিবসে 22:00-এ |
0 0 1 1 * | ১ জানুয়ারি মধ্যরাতে (বার্ষিক) |
শর্টকাট ম্যাক্রো
অনেক ক্রন বাস্তবায়ন পাঁচটি ফিল্ডের বদলে কিছু নামযুক্ত শর্টকাট গ্রহণ করে। এই টুলটি পার্স করার আগে সেগুলো প্রসারিত করে, তাই সেগুলো সমতুল্য এক্সপ্রেশনের মতোই ব্যাখ্যা ও শিডিউল করা হয়:
| ম্যাক্রো | সমতুল্য |
|---|---|
@yearly / @annually | 0 0 1 1 * |
@monthly | 0 0 1 * * |
@weekly | 0 0 * * 0 |
@daily / @midnight | 0 0 * * * |
@hourly | 0 * * * * |
মাস-এর-দিন / সপ্তাহ-এর-দিন-এর ফাঁদ
সবচেয়ে সাধারণ ক্রন ভুলটি হলো ধরে নেওয়া যে মাস-এর-দিন ও সপ্তাহ-এর-দিন উভয় সেট করা মানে
"উভয়ই মিলতে হবে"। তা নয়। যখন কোনো ফিল্ড সাধারণ * নয়, তখন ক্রন চলে যখন
এদের যেকোনো একটি মেলে। উদাহরণস্বরূপ 0 0 13 * 5 প্রতি মাসের 13
তারিখে মধ্যরাতে এবং প্রতি শুক্রবারে চলে — কেবল শুক্রবার 13-তে নয়। একটি সপ্তাহ-দিন
লক্ষ্য করতে মাস-এর-দিন * রাখুন; একটি তারিখ লক্ষ্য করতে সপ্তাহ-এর-দিন
* রাখুন। উপরের ব্যাখ্যা উভয় ফিল্ড সেট থাকলে ইচ্ছাকৃতভাবে "or" লেখে, যাতে জব
মোতায়েন করার আগে আপনি এই ফাঁদটি চিনতে পারেন।
ক্রন এক্সপ্রেশন কোথায় ব্যবহৃত হয়
একই পাঁচ-ফিল্ড সিনট্যাক্স Unix/Linux crontab জব, Kubernetes-এ কন্টেইনারাইজড
CronJob রিসোর্স, CI/CD শিডিউল (GitHub Actions, GitLab CI), সার্ভারলেস শিডিউলার
(AWS EventBridge ইত্যাদিতে ক্রন-শৈলীর ট্রিগার), এবং অসংখ্য টাস্ক রানার ও অ্যাপ্লিকেশন ফ্রেমওয়ার্ক
চালায়। যেহেতু এই নোটেশন অভিন্ন, একটি ক্রন লাইন এক নজরে পড়তে পারা — এবং ঠিক কখন তা চলবে তা
নিশ্চিত করা — একটি সত্যিকারের পোর্টেবল দক্ষতা। খেয়াল রাখুন কিছু সিস্টেম সামনে সেকেন্ডের জন্য
একটি ষষ্ঠ ফিল্ড, বা শেষে একটি বছর ফিল্ড যোগ করে; এই টুলটি ক্লাসিক পাঁচ-ফিল্ড রূপ পার্স করে।
প্রায়শই জিজ্ঞাসিত প্রশ্ন
- ক্রন এক্সপ্রেশনের পাঁচটি ফিল্ড কী কী?
- একটি মানক ক্রন এক্সপ্রেশনে পাঁচটি স্পেস-বিভক্ত ফিল্ড থাকে, বাম থেকে ডানে পড়া হয়: মিনিট (0–59), ঘণ্টা (0–23), মাসের দিন (1–31), মাস (1–12), এবং সপ্তাহের দিন (0–7, যেখানে 0 ও 7 উভয়ই রবিবার বোঝায়)। প্রতিটি ফিল্ড একটি একক মান, কমা-বিভক্ত তালিকা, হাইফেন দেওয়া রেঞ্জ, স্ল্যাশ দিয়ে লেখা স্টেপ, বা "প্রতিটি মান" অর্থে একটি তারকাচিহ্ন (*) গ্রহণ করে। বর্তমান সময় যখন প্রতিটি ফিল্ডের সাথে মেলে তখন শিডিউলটি চলে। মাস ও সপ্তাহ-দিনকে JAN বা MON-এর মতো তিন-অক্ষরের নাম হিসেবেও লেখা যায়।
- ক্রন এক্সপ্রেশনে */5 মানে কী?
- স্ল্যাশ একটি স্টেপ মান আনে, তাই মিনিট ফিল্ডে */5 মানে "প্রতি 5তম মিনিট" — অর্থাৎ মিনিট 0, 5, 10, 15 ইত্যাদিতে। স্ল্যাশের আগের অংশ শুরুর বিন্দু ও রেঞ্জ নির্ধারণ করে: */5 শূন্য থেকে শুরু হয়, যেখানে 5/15 মিনিট 5 থেকে শুরু হয়ে প্রতিবার 15 যোগ করে (5, 20, 35, 50)। স্টেপকে রেঞ্জের সাথেও জোড়া যায় — ঘণ্টা ফিল্ডে 9-17/2 সকাল 9 থেকে বিকেল 5-এর মধ্যে প্রতি দুই ঘণ্টায় চলে।
- মাস-এর-দিন ও সপ্তাহ-এর-দিন অপ্রত্যাশিতভাবে কেন পরস্পর ক্রিয়া করতে পারে?
- যখন মাস-এর-দিন ও সপ্তাহ-এর-দিন উভয় ফিল্ড সীমাবদ্ধ থাকে (কোনোটিই সাধারণ তারকাচিহ্ন নয়), তখন ক্রন জবটি চালায় যখন এদের যেকোনো একটি মেলে, উভয়ই নয়। তাই 0 0 13 * 5 মানে "মাসের 13 তারিখে মধ্যরাতে, এবং সেইসাথে প্রতি শুক্রবারে" — কেবল শুক্রবার 13-তে নয়। আপনার যদি এমন জব দরকার হয় যা কেবল একটি নির্দিষ্ট সপ্তাহ-দিনে চলে, তবে মাস-এর-দিন * রাখুন; একটি নির্দিষ্ট তারিখ দরকার হলে সপ্তাহ-এর-দিন * রাখুন। এই পার্সারটি সেই মানক OR আচরণ অনুসরণ করে, এবং সহজ-বাংলা ব্যাখ্যা "or" বলে যাতে এই ফাঁদটি দৃশ্যমান হয়।
- "পরবর্তী রান সময়" কোন টাইমজোনে দেখানো হয়?
- পরবর্তী রান সময় আপনার নিজের ডিভাইসের স্থানীয় টাইমজোনে গণনা করা হয়, কারণ বেশিরভাগ মানুষ এটাই দেখতে চান এবং এর জন্য কোনো সার্ভারের প্রয়োজন নেই। এর বিপরীতে, একটি প্রকৃত ক্রন ডিমন সেই টাইমজোনে চলে যেটির জন্য সার্ভার কনফিগার করা থাকে (প্রায়ই UTC)। আপনার সার্ভার যদি ভিন্ন টাইমজোন ব্যবহার করে, তবে এখানে দেখানো সময়গুলো মনে মনে সমন্বয় করে নিন, বা সার্ভার/শিডিউলারকে আপনার টাইমজোনে সেট করুন। গণনাটি সম্পূর্ণ আপনার ব্রাউজারে হয় — এক্সপ্রেশনটি কোথাও পাঠানো হয় না।
- এটি কি @daily, @hourly ও অন্যান্য শর্টকাট সমর্থন করে?
- হ্যাঁ। নামযুক্ত ম্যাক্রো @yearly (এবং এর উপনাম @annually), @monthly, @weekly, @daily (এবং এর উপনাম @midnight) ও @hourly পার্স করার আগে তাদের পাঁচ-ফিল্ড সমতুল্যে প্রসারিত করা হয়, তাই সেগুলো একটি সাধারণ এক্সপ্রেশনের মতোই ব্যাখ্যা ও শিডিউল করা হয়। @reboot চিহ্নিত হয় কিন্তু এর কোনো নির্দিষ্ট শিডিউল নেই — এটি সিস্টেম চালু হওয়ার সময় একবার চলে — তাই এর জন্য কোনো রান সময় তালিকাভুক্ত করা যায় না।
- আমার ক্রন এক্সপ্রেশন কি কোনো সার্ভারে পাঠানো হয়?
- না। পার্সিং, সহজ-বাংলা ব্যাখ্যা ও পরবর্তী-রান গণনা সবই আপনার ব্রাউজারে সাধারণ JavaScript দিয়ে স্থানীয়ভাবে চলে। কিছুই আপলোড বা সংরক্ষণ করা হয় না, তাই এটি অভ্যন্তরীণ জব শিডিউলের সাথে ব্যবহার করা নিরাপদ, এবং পৃষ্ঠা লোড হওয়ার পরে এটি অফলাইনেও কাজ করে।