גלוש ישירות
:בערוץ   :חפש

ממשק משתמש
  סטטוס: אורח
  הירשם לאתר  
  כניסת חברים  


פרסום
 
 
>> מדריכים - ראשי     >> ערוץ לינוקס     >> שונות     צפיה במדריך

Setup - מדריכים


תזמון משימות בלינוקס. שימוש בשירות crond   (לגירסת הדפסה)


תזמון משימות בלינוקס, שימוש ב crontab


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

נוכל לראות את מבנה הקובץ ע"י הקשת הפקודה

more /etc/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. יצירת ספריה חדשה המכילה את הקבצים שירוצו בתזמון המשימה

mkdir /etc/cron.test


2. כניסה לספריה ויצירת קובץ המכיל סקריפט


cd /etc/cron.test
vi testfile


בתוך קובץ ה textfile ארשום:

#!/bin/sh
mkdir /var/testdir


רצוי בשלב זה להריץ את הקובץ בכדי לראות שהוא אכן פועל
כמו כן לתת לו הרשאות בהתאם (הרשאות הרצה, לא לשכוח)


3. עריכת קובץ ה crontab כדי שיפעיל את הספריה עם הסקריפט

כעת עלינו להגדיר את קובץ ה crontab כך שיריץ את הקובץ(או את כל הקבצים תחת אותה
ספריה) בכל יום, בשעה 12:01. נעשה זאת כך:


vi /etc/crontab

ושם נוסיף:

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 , נציץ כאן:

more /var/log/cron


שינוי בקובץ ה crontab דורש restart של ה service
ברגע שנערוך את קובץ ה crontab, נדרש לבצע restart ל service ה crond
פעולה זאת תבוצע כך:


service crond restart


בעיית הרשאות לקבצי ה 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


(לגירסת הדפסה)
3    - דירוג הגולשים         דרג מדריך

כרטיס אישי : Itzik1


Copyright © 2000-2006 Setup.co.il צרו קשר     פרסום     על האתר     דרושים     זמן טעינה: 0.00