איך להשתמש בו
- הקלידו או הדביקו ביטוי cron, או בחרו אחד מהתזמונים הנפוצים.
- קראו את המשמעות בשפה פשוטה. שדות לא תקינים מסומנים עם הסיבה.
- בדקו את 10 זמני ההרצה הבאים, המוצגים באזור הזמן המקומי שלכם. עברו ל-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 (כל ערך 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 פועל ב-13 בכל חודש וגם בכל יום שישי, לא רק ביום שישי ה-13. מכיוון שהבדיקה היא האם השדה מתחיל ב-*, צעד כמו */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 נראה כמו "9:00 באחד בחודש אם זה יום שני", אבל הוא רץ ב-09:00 באחד בכל חודש וגם בכל יום שני. כדי להריץ רק ביום שני הראשון, קבעו 0 9 1-7 * * ובדקו את יום השבוע בתוך הסקריפט.
שאלות נפוצות
מה המשמעות של */5 ב-cron?
זה אומר כל ערך חמישי של השדה, החל מהערך הנמוך ביותר. בשדה הדקות, */5 ירוץ בדקות 0, 5, 10 … 55. בשדה השעות, */5 ירוץ ב-0, 5, 10, 15 ו-20, כך שהפער מ-20:00 לחצות הוא ארבע שעות, לא חמש.
מדוע המשימה שלי רצה ביותר ימים משציפיתי?
כאשר גם שדה יום החודש וגם שדה יום השבוע מוגבלים, cron רץ בימים שמתאימים לאחד מהם. לדוגמה, 0 0 15 * 1 ירוץ ב-15 בכל חודש ובכל יום שני. הגדירו אחד משני השדות כ-* כדי לדרוש רק את השדה האחר.
באיזה אזור זמן cron משתמש?
אזור הזמן של המערכת בשרת שמריץ את דמון ה-cron, אלא אם כן ה-crontab מגדיר CRON_TZ או TZ (נתמך ב-cronie). מתזמנים בענן משתמשים לרוב ב-UTC כברירת מחדל. השתמשו במתג UTC כדי לראות את הזמנים שבהם ישתמש שרת UTC.
האם אפשר להשתמש בשניות או בשדה שנה?
לא ב-cron הרגיל, שלו רזולוציה של דקה אחת וחמישה שדות. פורמטים של שישה ושבעה שדות עם שניות ושנים שייכים ל-Quartz, Spring וספריות דומות ואינם נתמכים בכלי הזה.
האם 0 או 7 מציינים את יום ראשון?
גם וגם. בשדה יום השבוע, 0 ו-7 שניהם משמעותם יום ראשון, 1 הוא יום שני ו-6 הוא שבת. אפשר גם לכתוב את שמות שלוש האותיות SUN עד SAT.
פרטיות
הביטוי מפוענח וזמני ההרצה מחושבים בדפדפן שלכם. שום דבר שאתם מקלידים אינו מועלה, אינו נשמר ואינו נכלל באנליטיקות.