אינטרנט ישראל
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
ראשי » פיתוח אינטרנט » פתרונות ומאמרים על פיתוח אינטרנט » crontab – מדריך קצרצר למתחיל

crontab – מדריך קצרצר למתחיל

רן בר-זיק דצמבר 5, 2021 9:32 am 4 תגובות

הפעלת משימות מתוזמנות באמצעות cron במערכות ושרתים מבוססי לינוקס

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.

אחת מהתוכנות הכי חשובות במערכות הפעלה מבוססות לינוקס (גם מק אגב) היא cron – סוג של תוכנת עזר קטנה שעוזרת לנו לתזמן משימות שחוזרות על עצמן. למשל גיבוי, או עדכון של תוכנה, או כל דבר שצריך לעשות X פעמים בתקופת זמן. הדוגמה הכי טובה שאני מכיר היא וורדפרס. אם אנחנו עובדים עם וורדפרס, אנחנו מקבלים בחינם גם פעולות שונות כמו עדכון של וורדפרס ותוספיו השונים. איך בדיוק וורדפרס "יודעת" מתי להתעדכן? עם cron.

ה-cron הוא בעצם daemon ששמו הוא crond. למי שלא יודע, daemon היא תוכנה שרצה ברקע של כל מערכת לינוקס. למשל httpd שהיא תהליך ברקע של שרת http. אז כך גם crond. זה ה-daemon של cron שרץ לו ברקע כל הזמן במערכת לינוקס. בחלונות יש גם משהו כזה כמובן אבל אין לי מושג מהו ובטח מגיעים אליו עם מלא ממשקים גרפיים דוחים ולא מובנים אבל בלינוקס/מק כל עבודות ה-cron מנוהלים עם CLI בשם crontab שמאפשר לנו לצפות בעבודות ה-cron, לשנות אותן ולנהל אותן. הפקודה crontab היא מלשון cron table. כי יש טבלה מסודרת להפעלת פקודות כאלו.

אנו נדגים באמצעות סקריפט bash קטן שברגע שמפעילים אותו, הוא יוצר רשומה ב-test.log. הוא נראה כך:

#!/bin/bash
#
LOGFILE=~/test.log
echo "`date +%H:%M:%S` : Working" >> $LOGFILE

אחרי שאנו נותנים הרשאות מספקות לסקריפט באמצעות chmod, אנו ננסה להפעיל אותו:

➜  ~ ./cron-demo-script.sh
➜  ~ cat test.log
12:55:31 : Working

ונראה שבאמת הוא יוצר קובץ בשם test.log ומכניס לתוכו שורה עם הזמן שבו הפעלתי אותו.

נניח שאני רוצה שהלוג הזה יעבוד כל פרק זמן מסוים. זה הזמן להשתמש ב-crontab כדי לקרוא לו. לכל משתמש במערכת יש את טבלת ה-cron שלו. גם ל-root אגב. על מנת ליצור cron, אני אקליד: crontab -e

➜  ~ crontab -e
crontab: no crontab for barzik - using an empty one
crontab: installing new cronta

אני אגיע לקובץ ריק עם עורך הטקסט המפורסם vim. אני אלחץ על i להכנס למצב עריכה. במצב הראשוני, הכל ריק שם. כיוון שאין עוד משימה אחת. אז אני אכניס את המשימה הראשונה. כל שורה היא משימה שרצה בהתאם להוראות. זה נראה כך:

* * * * * ~/.some-command.sh && /etc/some-other-command.sh && ~/.nvm/versions/node/v16.5.0/bin/node ~/some-node-command.js

כל מה שאנו נשים בשורה הזו ירוץ. מה האינטרוולים? אלו ה-* האלו שאתם רואים. זה הדבר הכי מלחיץ ב-cron שהמון אנשים מתייחסים אליו בתור וודו. בואו ננסה לנתח אותו:

בגדול ה-* הראשונה מיועדת לדקה.

כך למשל

10 * * * * 

זה – בכל דקה עשירית בשעה.

ה-* השניה מיועדת לשעה.

10 4 * * * 

בכל שעה 4 (AM) ועשרה.

ה-* השלישית מיועדת ליום.

10 4 3 * * 

בכל ה-3 לחודש, שעה 4 ועשרה.

ה-* הרביעית מיועדת לחודש.

10 4 3 12 * 

בכל ה-3 לדצמבר, שעה 4 ועשרה.

והכוכבים האחרונה זה ליום בשבוע. למשל – כל עשר דקות ביום ראשון (הימים מתחילים ב-0 ונגמרים ב-6)

10 * * * 0

וכמובן שאפשר ממש לחגוג עם ביטויים שונים שמשתמשים בטווח או ב-/. כמו למשל – כל חמש דקות.

1/5 * * * *

זה פשוט אחרי שמבינים, הבעיה היא שקשה להבין. מה הכי קל? ראשית יש לנו את crontub.guru שמסייע מאוד בקביעה והבנה של הוראות התזמון. ושנית יש לנו את גוגל – מספיק לגגל במרץ: "how to configure crontab to run every 3rd minutes in friday the 13th" או משהו בסגנון כדי לקבל תשובה.

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

* * * * * ~/cron-demo-script.sh

אחרי כן נלחץ על אסקייפ, נקודתיים ו-qw כדי לשמור ולצאת. כן, זהו vi 😂

אם נלחץ על crontab -l, אנו נראה את רשימת ה-cron שיש למשתמש:

אחרי ששמרנו, זה הזמן לראות שהכל עובד. נריץ את פקודת tail -f על קובץ הלוג. הפקודה הזו מראה את חמשת השורות האחרונות וכן היא מעדכנת, בזמן אמת, כל שינוי לקובץ הלוג. אפשר לראות שכל דקה היה עדכון.

אם אנו רוצים להפטר מה-cron, אין שום בעיה, פשוט מוחקים את השורה שלא רוצים בה מ-crontab.

בונוס – למשתמשי וורדפרס

אם יש לכם וורדפרס והעדכונים האוטומטיים, תזמוני הפוסטים, גיבויים וכו' לא עובדים לכם כמו שצריך – סימן שה-cron שלכם לא מחובר. לוורדפרס יש קובץ cron שאמור להיות מחובר ל-cron. בתהליך ההתקנה של וורדפרס זה רץ אוטומטית אבל לא תמיד זה עובד או שיש בעיות אחרות של permissions. שם הקובץ הוא wp-cron.php ועל מנת להפעיל אותו אפשר להכניס ל-cron משהו כזה:

0 * * * * su daemon -s /bin/sh -c "cd /opt/bitnami/apps/wordpress/htdocs; /opt/bitnami/php/bin/php -q wp-cron.php"

כאשר /opt/bitnami/apps/wordpress/htdocs הוא הנתיב לוורדפרס שלכם בשרת וה-/opt/bitnami/php/bin/php הוא הנתיב לתוכנת ה-PHP. אפשר למצוא אותו באמצעות which php.

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.
וורדפרס לינוקס תשתית

4 תגובות

  1. דביר הגב דצמבר 5, 2021 בשעה 7:36 pm

    תודה על כל ההשקעה!

  2. יוני הגב דצמבר 6, 2021 בשעה 9:16 am

    מעולה!

  3. יגאל הגב דצמבר 10, 2021 בשעה 8:43 am

    מוסבר בפשטות ובבהירות. כל הכבוד!

  4. דניאל הגב ינואר 4, 2022 בשעה 8:36 pm

    אחלה של מדריך להתחלה!

    אגב, המקביל ב-Windows נקרא task scheduler =)

השארת תגובה

ביטול

ללמוד ג'אווהסקריפט בעברית

ללמוד לתכנת ג'אווהסקריפט בעברית שגייס יותר משלוש מאות אלף שקל ולמעלה מ-2000 תומכים - בואו ללמוד עכשיו איך לתכנת.

רשימת הנושאים
  • מדריכים
    • ריאקט
    • טייפסקריפט
    • ECMAScript 6
    • ES20XX
    • Node.js
    • Express
    • רספברי פיי
    • Babel
    • docker
    • MongoDB
    • Git
    • לימוד MySQL
    • SASS
    • jQuery
    • CSS3
    • HTML 5
    • SVN
    • LESS
  • פיתוח אינטרנט
    • פתרונות ומאמרים על פיתוח אינטרנט
    • jQuery Scripts
    • jQuery למתקדמים
    • יסודות בתכנות
    • נגישות אינטרנט
  • חדשות אינטרנט
  • מידע כללי על אינטרנט
    • רשת האינטרנט
    • בניית אתרי אינטרנט
  • rss logo

    לכל המאמרים

    לכל המאמרים שפורסמו באינטרנט ישראל משנת 2008 ועד עכשיו.
  • rss logo

    RSS Feed

    משתמשים בקורא RSS? אם כן, עקבו אחרי אינטרנט ישראל באמצעות פיד ה-RSS!
    מה זה RSS?
  • Twitter logo

    עקבו אחרי בטוויטר

    בחשבון הטוויטר שלי אני מפרסם עדכונים מהירים על חדשות בתחום התכנות והיזמות, התרעות על מצבי חירום ורכילות בוערת על תחום הווב.
    מה זה טוויטר?
  • facebook like image

    ערוץ הטלגרם של אינטרנט ישראל

    בערוץ הטלגרם של אינטרנט ישראל אני מפרסם את הפוסטים של באתר וכן עדכונים טכנולוגיים נוספים.
    מה זה טלגרם?
  • github logo

    הפרויקטים שלי בגיטהאב

    הפרויקטים שאני כותב ושוחררו לציבור ברישיון קוד פתוח נמצאים ברובם בגיטהאב.
חיפוש

כל הזכויות שמורות לרן בר-זיק ולאינטרנט ישראל | מדיניות הפרטיות של אתר אינטרנט ישראל | אתר אינטרנט ישראל נגיש לפי תקן WCAG 2.0 AA | הצהרת הנגישות של האתר | אבטחת מידע ודיווח על בעיית אבטחת מידע

גלילה לראש העמוד