تولیدکننده و تجزیه‌گر عبارت Cron

یک عبارت cron بسازید یا رمزگشایی کنید و دقیقاً ببینید چه زمانی اجرا می‌شود — ۱۰ زمان اجرای واقعی بعدی، نه فقط یک توضیح.

ابزارهای توسعه‌دهنده رایگان
نحو استاندارد ۵ فیلدی crontab: دقیقه، ساعت، روز ماه، ماه، روز هفته. از *، محدوده‌ها (1-5)، گام‌ها (*/15)، فهرست‌ها (1,3,5) و نام‌هایی به سبک MON/JAN پشتیبانی می‌کند.

سازنده بصری

تغییر یک فهرست کشویی، عبارت بالا را به‌روزرسانی می‌کند. همچنین می‌توانید عبارت را مستقیماً تایپ یا جای‌گذاری کنید.
به زبان ساده

۱۰ زمان اجرای بعدی

دربارهٔ این ابزار

این ابزار عبارت کرون چه کاری انجام می‌دهد

نحو Crontab یکی از آن چیزهایی است که هر توسعه‌دهندهٔ بک‌اند یا مدیر سیستم دائماً از آن استفاده می‌کند، اما هیچ‌وقت کاملاً حفظش نمی‌شود — ترتیب آن دقیقه-ساعت-روز است یا ساعت-دقیقه-روز؟ چه چیزی */15 9-17 * * 1-5 واقعاً اجرا شود؟ این ابزار در هر دو جهت کار می‌کند: با منوهای کشوییِ دقیقه، ساعت، روزِ ماه، ماه و روزِ هفته، یک برنامه زمانی را به‌صورت بصری بسازید، یا عبارتی را که در کدبیس شخص دیگری پیدا کرده‌اید جای‌گذاری کنید تا فوراً ترجمه‌ای به زبان ساده و ۱۰ زمان بعدیِ اجرای واقعی آن را دریافت کنید؛ زمان‌هایی که به‌صورت واقعی از همین لحظه محاسبه می‌شوند، نه با یک تقریب کلی.

این ابزار از نحو استاندارد crontab در Unix/Linux پشتیبانی می‌کند: نویسه‌های عام (*، بازه‌ها (1-5)، مراحل (*/15، فهرست‌های جداشده با ویرگول (1,15,30), ماه‌ها و روزهای هفته نام‌گذاری‌شده (JAN, MON، و رایج‌ترین @daily / @hourly / @weekly / @monthly / @yearly میان‌برها.

نحوه استفاده از آن

عبارت cron را مستقیماً در فیلد تایپ یا جای‌گذاری کنید، یا از سازنده بصریِ زیر آن استفاده کنید — هر منوی کشویی با تغییر شما عبارت را به‌صورت زنده به‌روزرسانی می‌کند و برعکس. در ادامه، جمله‌ای خوانا درباره برنامه زمانی و فهرستی از ۱۰ تاریخ و زمان واقعی بعدیِ اجرا را می‌بینید. این زمان‌ها با شبیه‌سازی دقیقه‌به‌دقیقه از همین لحظه محاسبه می‌شوند؛ بنابراین نتیجه دقیقاً همان چیزی است که یک cron daemon واقعی انجام می‌دهد — حتی در موارد پیچیده‌ای که هم روزِ ماه و هم روزِ هفته محدود شده‌اند (قانون واقعی cron: با برقرار شدن هرکدام از این شرط‌ها، وظیفه اجرا می‌شود).

یک مثال واقعی

0 9 * * 1-5 به‌صورت «در ساعت 09:00، از دوشنبه تا جمعه» تفسیر می‌شود — یک کار کلاسیکِ صبح‌های روزهای کاری — و فهرست اجراهای بعدی، 10 زمان بعدیِ ساعت 9 صبح در روزهای کاری را نشان می‌دهد و آخرهفته‌ها را به‌درستی رد می‌کند. وارد کنید 0 0 1 1 * در عوض، خواهید دید که واقعاً کاری سالانه در اول ژانویه است و تاریخ‌های اجرای بعدی، یک سال با هم فاصله دارند.

سؤالات متداول

وقتی هر دو تنظیم شده باشند، تفاوت روزِ ماه و روزِ هفته چیست؟

این مورد تقریباً همه را به اشتباه می‌اندازد: cron استاندارد، محدود بودن روزِ ماه و محدود بودن روزِ هفته را به‌صورت یک یا، نه AND. 0 0 1,15 * 1 در روزهای اول و پانزدهم اجرا می‌شود، و هر دوشنبه — نه فقط دوشنبه‌هایی که اتفاقاً در روز 1 یا 15 ماه قرار می‌گیرند. محاسبهٔ اجرای بعدیِ این ابزار دقیقاً از همین قانون پیروی می‌کند.

آیا از ثانیه‌ها (کرون ۶‌فیلدی به سبک Quartz) پشتیبانی می‌کند؟

خیر — این ابزار از نحو استاندارد ۵‌فیلدی crontab در Unix/Linux استفاده می‌کند (دقیقه، ساعت، روزِ ماه، ماه، روزِ هفته)؛ همان نحوی که crontab، بیشتر سیستم‌های CI و CronJobهای Kubernetes به کار می‌برند. گونهٔ ۶ تا ۷‌فیلدی Quartz/Spring که شامل ثانیه است، پشتیبانی نمی‌شود.

*/15 دقیقاً یعنی چه؟

یعنی «هر 15 واحد، از حداقل مقدار فیلد شروع کن» — در فیلد دقیقه، یعنی :00، :15، :30، :45. این شکل کوتاه‌شدهٔ فهرست 0,15,30,45.

چرا عبارت من می‌گوید که هرگز اجرا نمی‌شود؟

معمولاً یک تاریخ ناممکن است؛ مثلاً ترکیب روزِ ماه 30 با ماه فوریه — این ترکیب هرگز در تقویم وجود ندارد، بنابراین هیچ تاریخ واقعی‌ای با آن مطابقت نمی‌کند.

آیا این ابزار فقط برای یک پلتفرم خاص (AWS، Kubernetes و غیره) است؟

این همان نحو استاندارد و سادهٔ crontab است که خود crontab، GitHub Actions، GitLab CI و Kubernetes CronJobs همگی مستقیماً از آن استفاده می‌کنند — بدون هیچ افزونهٔ اختصاصیِ پلتفرم.