Cron job וקסמי האוטומציה

מחבר:
בתאריך:

Cron היא תוכנה המהווה חלק אינטגרלי של מערכת ההפעלה לינוקס שמאפשרת לתזמן הרצת משימות cron jobs. מאוד חשוב להכיר את הנושא כדי לעשות אוטומציה של תהליכים. לדוגמה, לקבוע שמנקים את הקאש פעם ביום, מגבים פעם בשבוע או שולחים דו"ח פעם ברבעון.

linux cron job tutorial

את משימות cron jobs שהמערכת נדרשת לבצע כותבים בתוך קובץ. כדי להוסיף משימות נקליד את הפקודה הבאה לתוך הטרמינל:

$ crontab -e

בפעם הראשונה בה נריץ את הפקודה בטרמינל תופיע השאלה באיזה עורך editor להשתמש.

במדריך נשתמש ב-vim אבל יכול להיות שלכם יהיה נוח יותר להשתמש בעורך אחר (מתחילים בדרך כלל אוהבים לעבוד עם nano).

אם אתם עובדים עם vim לחיצה על המקש i תעביר אתכם למצב עריכה.

בכל שורה כותבים משימה אחת כולל מתי המשימה צריכה לרוץ ואיזה פקודה להריץ.

כדי להריץ את הפקודה "run_backup" בראשון לכל חודש בשעה 12:30, נכתוב את ה-cron job הבא לתוך הקובץ:

30 12 1 * * run_backup

קוראים את זה משמאל לימין:

  • המקום הראשון הוא בשביל הדקה שבה הפקודה צריכה לרוץ והערך הוא 0 - 59 כי יש 60 דקות בשעה.
  • במקום השני השעה בה בה הפקודה תרוץ. הערכים הם בטווח 0 - 23. כוכבית אומרת בכל שעה.
  • במקום השלישי היום בחודש. הערכים הם בטווח 1 - 31.
  • במקום הרביעי החודש. הערכים הם 1 - 12.
  • במקום החמישי היום בשבוע. הערכים הם 0 - 6 כאשר 0 הוא יום ראשון ו-6 שבת.
  • לבסוף, הפקודה שצריך להריץ.

נחזור לדוגמה:

30 12 1 * * run_backup
  • במקום הראשון והשני הדקות והשעות (12:30).
  • במקום השלישי היום בחודש (1) כדי שהפקודה תרוץ בראשון לחודש.
  • במקום הרביעי החודש. מכיוון שאנחנו רוצים שהפקודה תרוץ בכל חודש נכתוב במקום כוכבית (*).
  • היום בשבוע לא משנה ולכן השתמשנו בכוכבית.

 

תחביר ה-cronjob מסוכם בקובץ /etc/crontab:

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
  • הקובץ /etc/crontab משמש את הקרון הכללי של מערכת ההפעלה, ה-system crontab. בעוד אנחנו עובדים על קובץ המיועד למשתמש שלנו user crontab.

 

בשביל הבדיקה נכתוב את השורה הבאה שמדפיסה את הביטוי "Hello" לקובץ זמני פעם בדקה:

* * * * * echo 'Hello' >> /tmp/test.txt

כדי לצאת מ- vim נקליק על מקש:

Esc

ואז נקליד:

:wq

כדי לשמור.

עכשיו אחרי ששמרנו נוודא את מה שעשינו. כדי לראות את רשימת המשימות ב-crontab נקליד לתוך הטרמינל:

$ crontab -l

ואם נראה את הפקודה שהוספנו אז הצלחנו במשימה:

* * * * * echo 'Hello' >> /tmp/test.txt

נוודא שהפקודה אכן רצה על ידי פתיחת הקובץ לקריאה:

$ cat /tmp/test.txt

Hello

הפקודה אכן רצה כמתוכנן מדי דקה.

במידה ונרצה שהפקודה תרוץ בתחילת כל שעה אז נשנה את הערך בשדה דקות לאפס:

0 * * * * echo 'Hello' >> /tmp/test.txt

 

אופרטורים של cron job

אפשר להגיע לתזמון מאוד מדויק של הרצת פקודות. בשביל זה צריך להכיר את האופרטורים הבאים:

  1. בכוכבית (*) נשתמש כדי לציין את כל הערכים האפשריים בשדה.

    לדוגמה:

    50 23 * * 0 root/backup.sh
    • ביום ראשון בשעה 23:50 תריץ את הפקודה לגיבוי. ללא תלות ביום או בחודש.
  2. פסיק (,) מציין מספר ערכים בשדה.

    לדוגמה:

    50 23 * * 0,2,5 root/backup.sh
    • יריץ את הפקודה בימים ראשון, שלישי ושישי.
  3. מקף (-) מציין טווח של ערכים.

    לדוגמה:

    50 23 * * 0-4 rm -rf /tmp/*
    • תריץ פקודה למחיקת הקבצים הזמניים בכל אחד מימות השבוע (ראשון עד חמישי).
  4. מפריד (/) מציין מספר ערכים מופרדים.

    לדוגמה:

    */15 * * * * /home/script.sh
    • הפקודה תריץ את הסקריפט כל 15 דקות.
  5.  

    שני דברים לסיום

    לכתיבת פקודות cron אני נעזר בכל חינמי מצויין crontab.guru.

    בכל פעם ש cron מריץ cron job הוא שולח מייל לחשבון המוגדר במערכת. כדי למנוע את ההתנהגות נוסיף בסוף הפקודה הפנייה לשום מקום. לדוגמה:

    */15 * * * * /home/script.sh >/dev/null 2>&1

     

    אולי גם זה יעניין אותך:

    10 דברים שאתה צריך לדעת כשאתה עורך קבצים באמצעות vim

    לינוקס - צינורות והפניות

    הכנסת קבצים לארכיון, חילוץ וכיווץ כשעובדים עם לינוקס

     

    לכל המדריכים בסדרת הלינוקס

     

    אהבתם? לא אהבתם? דרגו!

    0 הצבעות, ממוצע 0 מתוך 5 כוכבים

     

 

הוסף תגובה חדשה

 

= 7 + 3