ساخت آنی عبارتهای Cron
هر فیلد را تنظیم کنید — دقیقه، ساعت، روز ماه، ماه و روز هفته — و یک خط crontab آماده استفاده به همراه توضیحی به زبان ساده دریافت کنید.
همه چیز مستقیماً در مرورگر شما اجرا میشود — هیچ دادهای به جایی ارسال نمیشود و هیچ زمانبندیای ذخیره نمیشود.
عبارت Cron چیست؟
عبارت cron یک الگوی پنجفیلدی است که توسط سیستمهای شبهیونیکس برای زمانبندی اجرای خودکار دستورها در زمانها، تاریخها یا بازههای ثابت استفاده میشود.
هر فیلد یک واحد زمانی متفاوت را کنترل میکند — دقیقه، ساعت، روز ماه، ماه و روز هفته — و در کنار هم دقیقاً مشخص میکنند که یک کار چه زمانی باید اجرا شود.
نحو فیلدهای Cron
| دقیقه | 0–59 |
| ساعت | 0–23 |
| روز ماه | 1–31 |
| ماه | 1–12 |
| روز هفته | 0–6 (0 = یکشنبه) |
کاراکترهای ویژه
| * | هر مقدار — با هر مقدار ممکن برای آن فیلد مطابقت دارد |
| , | جداکننده فهرست مقادیر — مثلاً 1,15 یعنی روز اول و پانزدهم |
| - | بازهای از مقادیر — مثلاً 1-5 یعنی از دوشنبه تا جمعه |
| / | مقادیر پلهای — مثلاً */15 یعنی هر ۱۵ واحد |
چرا از سازنده Cron استفاده کنیم؟
- جلوگیری از اشتباهات نحوی که بهطور خاموش کارهای زمانبندیشده را از کار میاندازند
- مشاهده توضیحی به زبان ساده پیش از اجرای زمانبندی
- شروع از یک نمونه رایج بهجای نوشتن از ابتدا
- دریافت یک خط crontab آماده برای چسباندن، همراه با دستور اختیاری
- بدون نیاز به نصب یا ایجاد حساب کاربری
چگونه یک عبارت Cron بسازیم
- فیلدهای دقیقه، ساعت، روز، ماه و روز هفته را تنظیم کنید — یا یک نمونه رایج انتخاب کنید
- در صورت تمایل، دستوری که میخواهید اجرا شود را اضافه کنید
- توضیح به زبان ساده را بررسی کنید تا از صحت زمانبندی مطمئن شوید
- خط crontab را کپی کرده و در فایل crontab خود قرار دهید
بهترین شیوههای Cron
زمانهای مشخص را به زمانبندیهای بسیار پرتکرار ترجیح دهید — اجرای یک کار در هر دقیقه، در حالی که هر ۵ یا ۱۵ دقیقه کافی است، منابع را هدر میدهد.
وقتی کاری به هر دو فیلد روز ماه و روز هفته بستگی دارد، به یاد داشته باشید که بیشتر پیادهسازیهای cron این دو فیلد را بهصورت OR در نظر میگیرند، نه AND.
همیشه خروجی کارهای زمانبندیشده را ثبت کنید (مثلاً با هدایت آن به یک فایل) تا خطاها بدون توجه باقی نمانند.
موارد استفاده رایج
- پشتیبانگیری خودکار از پایگاه داده
- چرخش و پاکسازی لاگها
- تولید زمانبندیشده گزارشها
- گرم کردن یا باطلسازی کش
- ارسال دورهای خلاصههای ایمیلی
- همگامسازی دادهها میان سیستمها
- بررسیهای سلامت و پیامهای نظارتی
- تمدید گواهیها یا توکنها
پرسشهای متداول
یک کار cron در چه منطقه زمانی اجرا میشود؟
بهطور پیشفرض، cron از منطقه زمانی محلی سیستم استفاده میکند. برخی پلتفرمها اجازه میدهند منطقه زمانی مشخصی برای هر کار یا هر crontab تنظیم کنید — مستندات سیستم خود را بررسی کنید.
آیا عبارتهای cron میتوانند شامل ثانیه باشند؟
cron استاندارد یونیکس فقط از پنج فیلد (دقیقه و بالاتر) پشتیبانی میکند و فیلد ثانیه ندارد. برخی زمانبندها، مانند Quartz، از یک فیلد ثانیه اختیاری پشتیبانی میکنند، اما آن یک قالب متفاوت است.
اگر هم روز ماه و هم روز هفته را تنظیم کنم چه اتفاقی میافتد؟
بیشتر پیادهسازیهای cron کار را در صورت برقرار بودن هر یک از دو شرط اجرا میکنند (رابطه OR، نه AND). برای اجرا فقط در تاریخ مشخصی که با روز هفته معینی نیز مطابقت دارد، معمولاً به منطق اضافی در خود اسکریپت نیاز دارید.
چگونه میتوانم یک عبارت cron را پیش از استفاده آزمایش کنم؟
توضیح به زبان ساده نشاندادهشده در اینجا را بررسی کنید تا مطابق قصد شما باشد، سپس پیش از تکیه بر آن در محیط عملیاتی، آن را روی سیستم واقعی خود با یک زمانبندی آزمایشی کوتاهمدت تأیید کنید.
آیا باید از cron یا تایمرهای systemd استفاده کنم؟
cron ساده است و همهجا کار میکند، به همین دلیل برای کارهای تکراری ساده گزینهای ایدهآل است. تایمرهای systemd کنترل بیشتری ارائه میدهند (وابستگیها، ثبت لاگ، مدیریت اجراهای از دسترفته) و برای سیستمهایی که از قبل از systemd استفاده میکنند، انتخابی مناسب هستند.