מה זה מנתח ביטוי Cron?
Cron הוא התחביר הסטנדרטי לתזמון המשמש משימות cron של Unix/Linux, פייפרליינס של CI/CD, Kubernetes CronJobs ואינספור מתזמני משימות. ביטוי cron אורז לוח זמנים חוזר שלם לחמישה שדות קומפקטיים, וזה עוצמתי אך ידוע לשמצה בקושי לקריאה במבט חטוף — האם "0 */4 * * 1-5" הוא כל 4 שעות בימי חול, או משהו שונה לחלוטין?
מנתח זה מפרק ביטוי cron שדה אחר שדה ומתרגם אותו למשפט בעברית פשוטה, כך שתוכלו לוודא שלוח זמנים תקין לפני פריסתו, או להבין במהירות לוח זמנים שמישהו אחר כתב, בלי לבדוק מול טבלת תחביר cron.
מתי להשתמש במחשבון זה
- בעת אימות תזמון cron לפני פריסת משימה מתוזמנת או pipeline של CI/CD
- בעת ניפוי מדוע משימה מתוזמנת רצה או לא רצה בשעה בלתי צפויה
- בעת סקירת תזמון Kubernetes CronJob או GitHub Actions שכתב חבר צוות
- בעת לימוד תחביר cron לקורס הסמכה ב-sysadmin או DevOps
- בעת ביקורת ערכי crontab קיימים במהלך העברת שרתים
- בעת תכנון תבנית תזמון מורכבת המשלבת מספר אילוצי זמן
שלבים:
- הדביקו או הקלידו ביטוי cron בעל 5 שדות בשדה הקלט.
- ראו כל שדה מפורק בנפרד עם משמעותו.
- קראו את התרגום בשפה פשוטה של לוח הזמנים המלא.
- נסו כפתור תבנית מוכן עבור לוחות זמנים נפוצים כמו "כל שעה" או "ימי חול בשעה 9".
נוסחה
┌───────────── דקה (0-59)
│ ┌───────────── שעה (0-23)
│ │ ┌───────────── יום בחודש (1-31)
│ │ │ ┌───────────── חודש (1-12)
│ │ │ │ ┌───────────── יום בשבוע (0-6, ראשון=0)
│ │ │ │ │
* * * * *
מקרי שימוש
- אימות תזמון cron לפני פריסת משימה מתוזמנת או pipeline של CI/CD
- הבנת Kubernetes CronJob או פונקציה מתוזמנת serverless שכתב חבר צוות
- ניפוי באגים מדוע משימה מתוזמנת רצה (או לא רצה) בשעה בלתי צפויה
- לימוד תחביר cron לקורס sysadmin או DevOps
- ביקורת ערכי crontab קיימים במהלך העברת שרתים
יתרונות מרכזיים
- מתרגם מיידית תחביר cron סתום לעברית פשוטה
- מפרק כל אחד מ-5 השדות בנפרד למען בהירות
- תבניות מוכנות בלחיצה אחת לתבניות התזמון הנפוצות ביותר
- ללא הרשמה, פועל כולו בדפדפן שלכם
טיפים מקצועיים
- בספק, בדקו תחילה עם זמן קרוב מאוד לעתיד כדי לוודא שלוח הזמנים מופעל כצפוי
- השתמשו בטווחים (1-5) במקום לרשום כל ערך עם פסיקים, כשאפשר, לשם קריאות
- בדקו פעמיים את הגדרת אזור הזמן של השרת או המתזמן — זהו המקור הנפוץ ביותר לבאגים של "שעה שגויה" ב-cron
- לכל דבר מורכב יותר מתזמון יומי/שבועי פשוט, כתבו את התיאור בשפה פשוטה והשוו אותו לכוונתכם לפני הפריסה
טעויות נפוצות שיש להימנע מהן
- שכחה שיום-בחודש ויום-בשבוע משולבים עם OR, ולא AND
- בלבול בין יום-בשבוע שמתחיל מ-0 (0=יום ראשון) לבין מוסכמות המתחילות מ-1 במערכות אחרות
- הנחה ש-*/7 בשדה יום-בחודש פירושו "כל 7 ימים" — בפועל מדובר בימים 1, 8, 15, 22, 29, שמתחילים מחדש בכל חודש
- שכחה שרוב המימושים של cron רצים באזור הזמן המקומי של השרת, ולא ב-UTC או באזור הזמן של המשתמש
מונחי מפתח מוסברים
- Cron: מתזמן משימות מבוסס זמן המשמש במערכות הפעלה דמויות Unix
- Crontab: הקובץ או הפקודה המשמשים להגדרת רשימת משימות cron
- ערך צעד (step): התחביר "/N" שמשמעותו "כל N יחידות" החל מהמינימום של השדה
- CronJob: המשאב המובנה של Kubernetes להרצת משימות מתוזמנות cron
מושגים קשורים
- Time הפרש Calculator: חשב duration between two dates and times
- מחשבון ימים עד לתאריך: ספירת ימים עד תאריך מסוים
- Unix Timestamp ממיר: המרה בין חותמות זמן של Unix לתאריכים
- מחשבון חפיפת אזורי זמן: מציאת חפיפה בשעות עבודה בין אזורי זמן
- מעצב JSON: עיצוב ואימות נתוני JSON
דוגמה
הביטוי "0 9 * * 1-5" מתפרק כך: דקה=0, שעה=9, כל יום בחודש, כל חודש, יום שני עד שישי — כלומר "בשעה 09:00, יום שני עד שישי".
פירוש התוצאות שלכם
המנתח מפרק ביטוי cron בעל 5 שדות למרכיביו ומתרגם כל אחד לשפה פשוטה. חמשת השדות הם: דקה (0–59), שעה (0–23), יום בחודש (1–31), חודש (1–12) ויום בשבוע (0–6, כאשר 0 הוא יום ראשון). משימה רצה כאשר כל חמשת השדות תואמים לשעה הנוכחית — זוהי לוגיקת AND בין השדות.
שימו לב במיוחד לאינטראקציה בין יום-בחודש ליום-בשבוע, המשתמשת בלוגיקת OR (ולא AND). משימה המתוזמנת ליום 15 וגם ליום-בשבוע 5 תרוץ גם ב-15 בכל חודש וגם בכל יום שישי — ולא רק בימי שישי שחלים ב-15. זהו מקור נפוץ לבאגים בתזמון.

