מנתח ביטוי Cron

הדביקו כל ביטוי cron בעל 5 שדות וראו מיד מה הוא אומר בעברית פשוטה — בלי לפזול בין כוכביות וקווים כדי להבין מתי משימה רצה.

האם המחשבון עזר לכם?

מה זה מנתח ביטוי 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 קיימים במהלך העברת שרתים
  • בעת תכנון תבנית תזמון מורכבת המשלבת מספר אילוצי זמן

שלבים:

  1. הדביקו או הקלידו ביטוי cron בעל 5 שדות בשדה הקלט.
  2. ראו כל שדה מפורק בנפרד עם משמעותו.
  3. קראו את התרגום בשפה פשוטה של לוח הזמנים המלא.
  4. נסו כפתור תבנית מוכן עבור לוחות זמנים נפוצים כמו "כל שעה" או "ימי חול בשעה 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. זהו מקור נפוץ לבאגים בתזמון.

שאלות נפוצות

מהם 5 השדות בביטוי cron?
לפי הסדר: דקה (0-59), שעה (0-23), יום בחודש (1-31), חודש (1-12) ויום בשבוע (0-6, כאשר 0 הוא יום ראשון). משימה רצה כאשר כל חמשת השדות תואמים לשעה הנוכחית.
מה המשמעות של כוכבית (*) בתחביר cron?
כוכבית פירושה "כל ערך מותר" עבור אותו שדה. לדוגמה, * בשדה השעה פירושו שהמשימה יכולה לרוץ בכל שעה, כלומר שדה זה אינו מגביל את לוח הזמנים.
מה פירוש הביטוי */5?
הקו הנטוי מציין ערך צעד (step). */5 בשדה הדקה פירושו "כל 5 דקות" — החל מהערך המינימלי של השדה וחזרה על כך כל 5 יחידות.
כיצד אקבע משימה לימי חול בלבד?
השתמשו בטווח בשדה יום-בשבוע: 1-5 מייצג את יום שני עד שישי. בשילוב עם שעה ודקה ספציפיות, למשל "0 9 * * 1-5" מריץ את המשימה ב-9:00 בכל יום חול.
מה משמעות הפסיק בתחביר cron?
פסיק מפריד בין ערכים מרובים בשדה אחד. לדוגמה, 0,15,30,45 בשדה הדקה פירושו שהמשימה רצה בדקות 0, 15, 30 ו-45. הפסיק הוא פשוט OR: המשימה רצה בכל אחד מהערכים הרשומים.
מהו המקף (טווח) בתחביר cron?
מקף מגדיר טווח ערכים. לדוגמה, 1-5 בשדה יום-בשבוע פירושו יום שני עד שישי (ימים 1 עד 5). הטווחים כוללים את שני הקצוות. ניתן לשלב טווחים עם תחביר אחר: 1-5,0 פירושו יום שני עד שישי ועוד יום ראשון.
כיצד אקבע משימה לרוץ כל שבועיים?
cron סטנדרטי אינו תומך בתזמון דו-שבועי באופן טבעי. יש לכם שתי אפשרויות: (1) להשתמש בסקריפט עטיפה שבודק את התאריך ומבצע רק כל שבוע שני, או (2) להשתמש במתזמן משימות התומך בביטויים מורכבים יותר כמו AWS EventBridge או טיימרים של המערכת עם טריגרים מבוססי לוח שנה.
באיזה אזור זמן משתמש cron?
cron סטנדרטי משתמש באזור הזמן המקומי של השרת. אם השרת מוגדר ל-UTC, כל משימות cron רצות ב-UTC ללא קשר לאזור הזמן המקומי שלכם. תמיד וודאו את הגדרת אזור הזמן של השרת, במיוחד בסביבות ענן שבהן ברירת המחדל עלולה לא להתאים לאזור הזמן הצפוי.
מה ההבדל בין cron ל-crontab?
Cron הוא הדמון (שירות רקע) שמבצע משימות מתוזמנות. Crontab הוא קובץ התצורה (או הפקודה) שמגדיר את רשימת משימות cron. כשאתם עורכים את crontab, אתם כותבים את הגדרות לוח הזמנים שהדמון cron קורא ומבצע.
כיצד מתמודדים עם שעון קיץ (DST) ב-cron?
רוב היישומים של cron אינם מתקנים אוטומטית את שעון הקיץ. כשמזיזים את השעון קדימה, משימה המתוזמנת ל-2:00 עלולה לדלג לחלוטין. כשמזיזים את השעון אחורה, המשימה עלולה לרוץ פעמיים. כדי להימנע מבעיות DST, תזמנו משימות מחוץ לשעות המעבר (2:00–3:00) או השתמשו בתזמון מבוסס UTC.
האם אפשר להשתמש ב-cron למרווחים קצרים מדקה?
ל-cron סטנדרטי יש רזולוציה של דקה והוא אינו יכול לתזמן משימות בתדירות גבוהה יותר מפעם בדקה. עבור מרווחים קצרים מדקה, השתמשו בחלופות כמו טיימרים של systemd, Kubernetes CronJobs עם מרווחים קצרים יותר, או מתזמנים ברמת האפליקציה (node-cron עם תמיכה במילישניות).

גלה עוד כלים

מבחר טרי מתוך כל ספריית הכלים שלנו.