ساخت و تفسیر عبارت Cron (کرون جاب)
ساخت و تفسیر عبارتهای cron و crontab با توضیح فارسی و نمایش ۱۰ اجرای بعدی؛ همراه با مثالهای آماده.
ساخت با منو
۱۰ اجرای بعدی
دربارهٔ این ابزار
ساخت و تفسیر عبارت Cron به زبان ساده
کرون جاب (Cron Job) روشی برای اجرای خودکار دستورها و اسکریپتها در زمانهای مشخص روی سرورهای لینوکسی است؛ از پشتیبانگیری شبانهی دیتابیس گرفته تا ارسال خبرنامه یا پاک کردن کش. مشکل اینجاست که نحو cron را تقریباً هیچکس کامل حفظ نیست: ترتیب فیلدها دقیقه-ساعت است یا ساعت-دقیقه؟ */15 9-17 * * 1-5 دقیقاً کی اجرا میشود؟ با ابزار ساخت کرون جاب تولتولیا میتوانید عبارت را با منوهای ساده بسازید، یا عبارتی را که در یک پروژه پیدا کردهاید جایگذاری کنید تا معنی آن را به فارسی و ۱۰ زمان اجرای واقعی بعدی را ببینید.
ویژگیهای ابزار
- ساخت با منو: دقیقه، ساعت، روز ماه، ماه و روز هفته را انتخاب کنید تا عبارت ساخته شود.
- تفسیر عبارت: هر عبارت cron را جایگذاری کنید و توضیح آن را به زبان ساده ببینید.
- ۱۰ اجرای بعدی: زمانهای واقعی اجرا از همین لحظه، نه یک توضیح کلی.
- الگوهای آماده: هر دقیقه، هر ۵ دقیقه، هر ساعت، هر شب، روزهای کاری، هفتگی، ماهانه و سالانه.
- پشتیبانی کامل از نحو استاندارد:
*، بازه، گام، فهرست، نام ماهها و روزها و میانبرهایی مثل@daily. - رایگان و بدون ثبتنام.
آموزش استفاده
- یکی از الگوهای آماده را انتخاب کنید، یا با منوهای «ساخت با منو» برنامهی دلخواه را بسازید.
- اگر عبارت آماده دارید، آن را مستقیماً در فیلد «عبارت کرون» تایپ یا جایگذاری کنید.
- توضیح فارسی عبارت را در بخش «به زبان ساده» بخوانید.
- فهرست ۱۰ اجرای بعدی را بررسی کنید تا مطمئن شوید زمانها همان چیزی است که انتظار دارید.
- روی «کپی عبارت» بزنید و آن را در 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 که ثانیه دارد پشتیبانی نمیشود.
چرا عبارت من هیچ اجرای بعدی ندارد؟
معمولاً به دلیل یک تاریخ ناممکن است؛ مثلاً روز ۳۰ در ماه فوریه. چنین تاریخی هرگز در تقویم وجود ندارد، پس کار هیچوقت اجرا نمیشود.
چرا کرون جاب من در ساعت اشتباه اجرا میشود؟
تقریباً همیشه بهخاطر تفاوت منطقهی زمانی سرور با ساعت محلی شماست. منطقهی زمانی سرور را بررسی کنید و اختلاف آن با ساعت ایران (بهخصوص نیم ساعت اضافه) را در عبارت لحاظ کنید.
