ساخت و تفسیر عبارت Cron (کرون جاب)

ساخت و تفسیر عبارت‌های cron و crontab با توضیح فارسی و نمایش ۱۰ اجرای بعدی؛ همراه با مثال‌های آماده.

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

ساخت با منو

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

۱۰ اجرای بعدی

زمان‌ها به وقت دستگاه شما حساب شده‌اند؛ کران روی سرور با منطقه‌ی زمانی خود سرور اجرا می‌شود.

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

ساخت و تفسیر عبارت Cron به زبان ساده

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

ویژگی‌های ابزار

  • ساخت با منو: دقیقه، ساعت، روز ماه، ماه و روز هفته را انتخاب کنید تا عبارت ساخته شود.
  • تفسیر عبارت: هر عبارت cron را جای‌گذاری کنید و توضیح آن را به زبان ساده ببینید.
  • ۱۰ اجرای بعدی: زمان‌های واقعی اجرا از همین لحظه، نه یک توضیح کلی.
  • الگوهای آماده: هر دقیقه، هر ۵ دقیقه، هر ساعت، هر شب، روزهای کاری، هفتگی، ماهانه و سالانه.
  • پشتیبانی کامل از نحو استاندارد: *، بازه، گام، فهرست، نام ماه‌ها و روزها و میان‌برهایی مثل @daily.
  • رایگان و بدون ثبت‌نام.

آموزش استفاده

  1. یکی از الگوهای آماده را انتخاب کنید، یا با منوهای «ساخت با منو» برنامه‌ی دلخواه را بسازید.
  2. اگر عبارت آماده دارید، آن را مستقیماً در فیلد «عبارت کرون» تایپ یا جای‌گذاری کنید.
  3. توضیح فارسی عبارت را در بخش «به زبان ساده» بخوانید.
  4. فهرست ۱۰ اجرای بعدی را بررسی کنید تا مطمئن شوید زمان‌ها همان چیزی است که انتظار دارید.
  5. روی «کپی عبارت» بزنید و آن را در crontab سرور یا تنظیمات CI قرار دهید.

ساختار عبارت Cron

یک عبارت استاندارد cron از ۵ فیلد تشکیل شده که با فاصله از هم جدا می‌شوند:

┌───────────── دقیقه (0 تا 59)
│ ┌─────────── ساعت (0 تا 23)
│ │ ┌───────── روز ماه (1 تا 31)
│ │ │ ┌─────── ماه (1 تا 12)
│ │ │ │ ┌───── روز هفته (0 تا 6؛ 0 = یکشنبه)
│ │ │ │ │
* * * * *  دستور

نویسه‌های ویژه در Cron

نویسهمعنیمثال
*هر مقدار* در فیلد ساعت یعنی هر ساعت
-بازه9-17 یعنی ساعت ۹ تا ۱۷
,فهرست1,15 یعنی روز ۱ و ۱۵
/گام*/15 یعنی هر ۱۵ دقیقه

مثال‌های پرکاربرد کرون جاب

عبارتمعنی
* * * * *هر دقیقه
*/5 * * * *هر ۵ دقیقه
0 * * * *ابتدای هر ساعت
0 0 * * *هر شب ساعت ۰۰:۰۰
30 2 * * *هر روز ساعت ۲:۳۰ بامداد (مناسب برای پشتیبان‌گیری)
0 8 * * 6,0-3شنبه تا چهارشنبه ساعت ۸ صبح (روزهای کاری ایران)
0 9 * * 1-5دوشنبه تا جمعه ساعت ۹ صبح (روزهای کاری اروپا و آمریکا)
0 9 * * 6هر شنبه ساعت ۹ صبح
0 0 1 * *اول هر ماه میلادی
0 0 1 1 *هر سال، اول ژانویه

نکته‌ی مهم: ساعت سرور و ساعت ایران

Cron همیشه با منطقه‌ی زمانی خود سرور اجرا می‌شود، نه ساعت شما. بسیاری از سرورها، به‌خصوص سرورهای خارج از ایران، روی UTC تنظیم شده‌اند و ساعت ایران سه ساعت و نیم از UTC جلوتر است. یعنی اگر می‌خواهید کاری ساعت ۹ صبح به وقت تهران اجرا شود، روی سرور UTC باید آن را برای ساعت ۵:۳۰ تنظیم کنید:

30 5 * * *

برای فهمیدن منطقه‌ی زمانی سرور، دستور date یا timedatectl را روی سرور اجرا کنید. برای تبدیل ساعت بین منطقه‌های زمانی هم از تبدیل ساعت کشورها استفاده کنید. توجه داشته باشید که ۱۰ اجرای بعدی در این ابزار به وقت دستگاه شما نمایش داده می‌شود.

Cron و تقویم شمسی

روز و ماه در cron همیشه میلادی است و نمی‌توان مستقیماً برنامه‌ای مثل «اول هر ماه شمسی» نوشت، چون ماه‌های شمسی و میلادی با هم هم‌تراز نیستند. راه رایج این است که کرون جاب را هر روز اجرا کنید و داخل اسکریپت بررسی کنید که آیا امروز روز اول ماه شمسی است یا نه.

این ابزار برای چه کسانی مناسب است؟

  • توسعه‌دهندگان بک‌اند: برای زمان‌بندی کارهای دوره‌ای مثل ارسال ایمیل و پاک‌سازی داده‌ها.
  • مدیران سرور و DevOps: برای تنظیم پشتیبان‌گیری و نگهداری خودکار سرور.
  • کاربران هاست و cPanel: برای تنظیم Cron Jobs وردپرس و اسکریپت‌ها.
  • کاربران GitHub Actions و Kubernetes: برای تنظیم schedule و CronJob.

ابزارهای دیگر برنامه‌نویسی تولتولیا مثل تبدیل YAML به JSON، ساخت فایل htaccess و ‎.gitignore ساز را هم امتحان کنید.

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

کرون جاب چیست؟

کرون جاب یک دستور یا اسکریپت است که سرویس cron در سیستم‌های لینوکس و یونیکس، آن را در زمان‌های تعیین‌شده به‌صورت خودکار اجرا می‌کند. زمان اجرا با یک عبارت ۵ بخشی مشخص می‌شود.

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

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

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

یعنی «هر ۱۵ واحد، از کمترین مقدار فیلد». در فیلد دقیقه یعنی دقیقه‌های ۰، ۱۵، ۳۰ و ۴۵؛ همان 0,15,30,45 به شکل کوتاه‌تر.

آیا ثانیه هم پشتیبانی می‌شود؟

خیر. این ابزار از نحو استاندارد ۵ فیلدی crontab استفاده می‌کند که در لینوکس، GitHub Actions، GitLab CI و Kubernetes به کار می‌رود. قالب ۶ یا ۷ فیلدی Quartz و Spring که ثانیه دارد پشتیبانی نمی‌شود.

چرا عبارت من هیچ اجرای بعدی ندارد؟

معمولاً به دلیل یک تاریخ ناممکن است؛ مثلاً روز ۳۰ در ماه فوریه. چنین تاریخی هرگز در تقویم وجود ندارد، پس کار هیچ‌وقت اجرا نمی‌شود.

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

تقریباً همیشه به‌خاطر تفاوت منطقه‌ی زمانی سرور با ساعت محلی شماست. منطقه‌ی زمانی سرور را بررسی کنید و اختلاف آن با ساعت ایران (به‌خصوص نیم ساعت اضافه) را در عبارت لحاظ کنید.