|
|
Setup - מדריכים
תזמון משימות בלינוקס. שימוש בשירות crond (לגירסת הדפסה) |
תזמון משימות בלינוקס, שימוש ב crontab
על מנת לתזמן משימות במערכת לינוקס, נוכל להשתמש בקובץ ה crontab שמיד נלמד עליו. קובץ זה מפעיל ספריות אחרות המכילות קבצי-פקודות, על פי התזמון שקבענו לו.
נוכל לראות את מבנה הקובץ ע"י הקשת הפקודה
הקובץ יראה כך:
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/
# run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly
|
שימו לב למספרים והכוביות מצד שמאל של כל שורה. אלו מספרים המציינים את הזמן המדויק לתזמון המשימה. סדר העמודות, מהשמאלי לימני:
דקות (0-59) שעות (0-23) יום בחודש (1-31) חודש בשנה (1-12) יום בשבוע (0-6, 0 מייצג יום ראשון, 1 יום שני, וכו')
כך למשל, אם ארצה שבכל דקה חמישית של השעה (9:05, 10:05, 11:05, וכו') לא משנה באיזה יום\תאריך\שנה, ירוץ ההליך, אני אוסיף לקובץ ה crontab כך:
05 * * * * root run-parts /etc/some_directory
|
באותה ספריה(שבדוגמא מצוינת כ some_directory) אני כמובן אשים קבצים המכילים את הפקודות המיועדות.
הליכים ליצירת משימה
בשורות הבאות אדגים יצירת משימה המתרחשת בכל יום בשעה 12:10 בצהריים.
1. יצירת ספריה חדשה המכילה את הקבצים שירוצו בתזמון המשימה
2. כניסה לספריה ויצירת קובץ המכיל סקריפט
cd /etc/cron.test vi testfile
|
בתוך קובץ ה textfile ארשום:
#!/bin/sh mkdir /var/testdir
|
רצוי בשלב זה להריץ את הקובץ בכדי לראות שהוא אכן פועל כמו כן לתת לו הרשאות בהתאם (הרשאות הרצה, לא לשכוח)
3. עריכת קובץ ה crontab כדי שיפעיל את הספריה עם הסקריפט
כעת עלינו להגדיר את קובץ ה crontab כך שיריץ את הקובץ(או את כל הקבצים תחת אותה ספריה) בכל יום, בשעה 12:01. נעשה זאת כך:
ושם נוסיף:
10 12 * * * root run-parts /etc/cron.test
|
בסיום, קובץ ה crontab יראה כך:
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/
# run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly
10 12 * * * root run-parts /etc/cron.test
|
אם כך, בכל יום בשעה 12:10 בצהריים, תרוץ המשימה ותפעיל את כל הקבצים תחת הנתיב /etc/cron.test , ובמקרה שלנו ירוץ שם קובץ אחד שיצור ספריה תחת הנתיב var שתיקרא testdir
ניטור בעיות נפוצות ב crond ופתרונן
איסוף לוגים
על מנת לראות את הלוגים הספציפיים של שירות ה crond , נציץ כאן:
שינוי בקובץ ה crontab דורש restart של ה service ברגע שנערוך את קובץ ה crontab, נדרש לבצע restart ל service ה crond פעולה זאת תבוצע כך:
בעיית הרשאות לקבצי ה cron
קבצי ה cron דורשים הרשאות ספציפיות (644). הרשאות פחותות או יתרות מאלה יהוו בעיה. אם למשל אנו רואים בלוגים את התופעה הבאה:
Dec 10 12:04:24 linux crond[19947]: (CRON) STARTUP (V5.0) Dec 10 12:04:24 linux crond[19947]: (*system*) BAD FILE MODE (/etc/crontab) Dec 10 12:04:24 linux crond[19947]: (*system*) BAD FILE MODE (/etc/cron.d/sysstat) Dec 10 12:04:24 linux crond[19947]: (*system*) BAD FILE MODE (/etc/cron.d/mailman) Dec 10 12:04:24 linux crond[19947]: (*system*) BAD FILE MODE (/etc/cron.d/mrtg)
|
המשמעות היא שישנה בעיית הרשאות לקבצים הללו. נצטרך להחזיר את שלושת הקבצים הללו למצב 644, ע"י הפקודה chmod כמודגם:
chmod 644 /etc/crontab chmod 644 /etc/cron.d/sysstat chmod 644 /etc/cron.d/mailman chmod 644 /etc/cron.d/mrtg
|
שינוי שבוצע בקובץ ה crontab ודורש restart
שינוי שבוצע בקובץ ה crontab דורש כאמור restart. כל שינוי שיבוצע בקובץ יגרור מיד שורה בלוג שנראית כך:
Dec 10 12:04:24 linux crond[19947]: (*system*) RELOAD (/etc/crontab)
|
המשמעות מבחינתנו - גש תעשה restart ל service
הרצת הפקודה crond בעת שהשירות פועל
הרצת הפקודה crond בזמן שהשירות פועל כבר, תוביל ל"שגיאה" הבאה:
[root@linux ~]# crond crond: can't lock /var/run/crond.pid, otherpid may be 6919: Resource temporarily unavailable
|
כפי שניתן להבין, ה pid המדובר (במקרה כאן, 6919) הוא ה pid של ה crond והוא כבר נמצא בשימוש.
קישורים נלווים
עוד מעט חומר באנגלית על ה crond , ניתן למצא בקישורים הבאים:
http://www.computerhope.com/unix/ucrontab.htm http://redhat.activeventure.com/8/customizationguide/ch-autotasks.html
תגיות: הפקודה crond crontab תזמון-משימות crontab command problem logs crond service
(לגירסת הדפסה)
|
| |
|
|
|