نحوه استفاده
- یک عبارت cron را تایپ یا جایگذاری کنید، یا یکی از زمانبندیهای رایج را انتخاب کنید.
- معنی سادهٔ آن را بخوانید. فیلدهای نامعتبر همراه با دلیل نامعتبر بودن مشخص میشوند.
- ۱۰ زمان اجرای بعدی را بررسی کنید که در منطقه زمانی محلی شما نمایش داده میشوند. اگر سرور شما با UTC کار میکند، به UTC تغییر دهید.
- زمانهای اجرا را برای اشتراکگذاری کپی کنید، یا عبارت را تغییر دهید تا زمانبندی دلخواه به دست آید.
نحوه کار
یک عبارت استاندارد cron، همانطور که در crontab روی لینوکس (Vixie cron و cronie) و بسیاری از زمانبندهای CI و هاستینگ استفاده میشود، پنج فیلد دارد که با فاصله از هم جدا میشوند: دقیقه (0–59)، ساعت (0–23)، روز ماه (1–31)، ماه (1–12 یا JAN–DEC) و روز هفته (0–7 یا SUN–SAT، که هر دو 0 و 7 به معنی یکشنبه هستند). هر فیلد * را برای همهٔ مقادیر، یک مقدار تکی، یک بازه مانند 1-5، یک فهرست مانند 1,15,30 و یک گام مانند */15 (هر پانزدهمین مقدار) یا 9-17/2 (هر دو ساعت از 9 تا 17) میپذیرد. نامها به بزرگی و کوچکی حروف حساس نیستند. میانبرهای @yearly (یا @annually)، @monthly، @weekly، @daily (یا @midnight) و @hourly بهترتیب معادل 0 0 1 1 *، 0 0 1 * *، 0 0 * * 0، 0 0 * * * و 0 * * * * هستند.
فیلدهای روز ماه و روز هفته از قاعدهای پیروی میکنند که بسیاری را غافلگیر میکند. اگر هر یک از این دو فیلد با * شروع شود، یک روز باید هر دو شرط را برآورده کند. اگر هر دو فیلد محدود شده باشند، یک روز وقتی مطابقت دارد که یکی از آنها برقرار باشد: 0 0 13 * 5 در روز سیزدهم هر ماه و همچنین هر جمعه اجرا میشود، نه فقط در جمعهٔ سیزدهم. چون معیار این است که فیلد با * شروع شود، یک گام مانند */2 نیز نامحدود در نظر گرفته میشود. این رفتار با Vixie cron و cronie مطابقت دارد؛ چند زمانبند دیگر متفاوت عمل میکنند.
زمانهای اجرای بعدی در منطقهٔ زمانی مرورگر شما یا بر حسب UTC محاسبه میشوند که بیشتر سرورها و زمانبندهای ابری از آن استفاده میکنند. خود cron از منطقهٔ زمانی دستگاهی که روی آن اجرا میشود استفاده میکند. در زمان تغییر ساعت تابستانی، دیمونهای cron واقعی رفتارهای متفاوتی دارند؛ این ابزار زمانهای محلی ناموجود هنگام جلو کشیدن ساعتها را حذف میکند و ساعت تکراری را یک بار فهرست میکند. قواعد گسترشیافته پشتیبانی نمیشوند: عبارتهای Quartz ششفیلدی یا هفتفیلدی با ثانیه یا سال، و نویسههای ویژهٔ ?، L، W و #.
نمونهها
بررسی سلامت در ساعات اداری
*/15 9-17 * * 1-5 یعنی هر 15 دقیقه بین 09:00 و 17:59، از دوشنبه تا جمعه. آخرین اجرا در هر روز ساعت 17:45 است.
پشتیبانگیری شبانه
30 2 * * * هر روز ساعت 02:30 اجرا میشود. اگر سرور از UTC استفاده میکند و شما در نیویورک هستید، فهرست اجراهای بعدی در حالت UTC زمانهایی را نشان میدهد که سرور واقعاً استفاده خواهد کرد.
تله فیلد روز
«0 9 1 * 1» به نظر میرسد یعنی «ساعت ۹:۰۰ روز اول ماه اگر دوشنبه باشد»، اما در واقع ساعت ۰۹:۰۰ روز اول هر ماه و همچنین هر دوشنبه اجرا میشود. برای اجرا فقط در اولین دوشنبه، زمانبندی 0 9 1-7 * * را تنظیم کنید و روز هفته را داخل اسکریپت بررسی کنید.
پرسشهای متداول
*/5 در cron به چه معناست؟
یعنی هر پنجمین مقدار فیلد، با شروع از کمترین مقدار. در فیلد دقیقه، */5 در دقیقههای 0، 5، 10 … 55 اجرا میشود. در فیلد ساعت، */5 در ساعتهای 0، 5، 10، 15 و 20 اجرا میشود؛ بنابراین فاصله از ساعت 20:00 تا نیمهشب چهار ساعت است، نه پنج ساعت.
چرا کار من در روزهای بیشتری از حد انتظار اجرا میشود؟
وقتی هر دو فیلد روزِ ماه و روزِ هفته محدود شده باشند، cron در روزهایی اجرا میشود که با هر یک از آنها مطابقت داشته باشند. برای مثال، 0 0 15 * 1 در روز پانزدهم و هر دوشنبه اجرا میشود. یکی از دو فیلد را روی * بگذارید تا فقط فیلد دیگر ملاک باشد.
cron از کدام منطقه زمانی استفاده میکند؟
منطقه زمانی سیستمیِ سروری که دیمن cron را اجرا میکند، مگر اینکه crontab متغیر CRON_TZ یا TZ را تنظیم کرده باشد (که توسط cronie پشتیبانی میشود). زمانبندهای ابری معمولاً بهطور پیشفرض از UTC استفاده میکنند. از گزینهٔ UTC استفاده کنید تا زمانهایی را ببینید که یک سرور UTC استفاده میکند.
آیا میتوانم از ثانیه یا فیلد سال استفاده کنم؟
در cron استاندارد نه؛ cron استاندارد دقت یکدقیقهای و پنج فیلد دارد. قالبهای شش و هفتفیلدی دارای ثانیه و سال به Quartz، Spring و کتابخانههای مشابه مربوط هستند و این ابزار از آنها پشتیبانی نمیکند.
آیا 0 یا 7 یکشنبه است؟
هر دو. در فیلد روزِ هفته، 0 و 7 هر دو به معنای یکشنبه هستند؛ 1 دوشنبه و 6 شنبه است. همچنین میتوانید نامهای سهحرفی SUN تا SAT را بنویسید.
حریم خصوصی
عبارت تجزیه و زمانهای اجرا در مرورگر شما محاسبه میشوند. هیچیک از دادههایی که وارد میکنید بارگذاری، ذخیره یا در تحلیلها گنجانده نمیشود.