הבנת "cron.d" ו"cron.daily" במערכות לינוקס
מהו Cron?
Cron הוא כלי מתוכנת בלינוקס שמאפשר לנו להריץ משימות באופן אוטומטי בזמנים ובתאריכים מוגדרים מראש. עם Cron, אפשר לנהל תוכניות שיפעלו בצורה קבועה לשם תחזוקה, גיבוי, עדכון נתונים ועוד. כל משימה שנרצה להריץ נקראת "מאגר" (Job), והגדרות זמנים לכל אחת מהן נקבעות בקובץ תצורה מיוחד.
היכן נמצאים קבצי Cron?
קבצי התצורה של Cron באים בכמה מקומות במערכת:
- crontab: קבצי קונפיגורציה אישיים שמאפשרים למשתמשים להגדיר את המשימות שירוצו.
- /etc/crontab: קובץ תצורה גלובלי שבו ניתן להגדיר משימות ברמת המערכת.
- */etc/cron./**: תיקיות המכילות קבצים או סקריפטים שיצורפו למערכת ההפעלה.
הבנת "cron.d"
הנתיב /etc/cron.d משמש לאחסון קבצי תצורה נוספים עבור Cron. ההיתרון בשימוש בקבצים בתיקיה זו הוא ומאפשר לאפליקציות חיצוניות להוסיף ולנהל משימות Cron מבלי לגעת בקובץ crontab המרכזי של כל משתמש או בקובץ /etc/crontab. כל קובץ בתיקיה זו יכול להכיל סקריפטים שירוצו בזמנים שונים, לפי הצורך.
תבנית קובץ ב-cron.d
קבצי Cron בתיקיה זו, בדרך כלל, נראים כך:
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
* * * * * username command_to_execute
- SHELL: שורת הפקודה שתשמש לריצה.
- PATH: המיקום של כל התוכניות שיכולות להיות מופעלות.
- מועד הריצה: מתאר את הזמן בו תתבצע הפקודה.
- username: המשתמש שיבצע את הפקודה.
- command_to_execute: הפקודה המדויקת להרצה.
הסבר על "cron.daily"
המדריך ראשון הוא תיקיית /etc/cron.daily, שם קיימות סקריפטים שיפעלו באופן יומי. תהליכים אלו מריצים שירותים חשובים, לעיתים על ידי משימות תחזוקה כמו גיבויים או עדכונים, ובכך מבטיחים את פעולת המערכת בצורה חלקה.
סקריפטים ב-cron.daily
הסקריפטים שנמצאים תחת /etc/cron.daily צריכים להיות קבצים עם הרשאת הפעלה. לדוגמה, ניקח סקריפט שמופיע בתיקיה במקרה שנמצא בה קובץ בשם logrotate:
- logrotate: כלי לניהול לוגים, מאפשר למחוק או לארכב לוגים גדולים.
בכל ביצוע של קרון יומי, קבצים שיתווספו לתוך תיקיה זו ירוצו באופן אוטומטי, ללא צורך בהתערבות ידנית.
איך יוצרים קובץ חדש ב-cron.d או cron.daily
יצירת קובץ חדש ב-cron.d
- התחבר למערכת כ-root.
- עבור לתיקיית
/etc/cron.d. - צור קובץ חדש עם סיומת yaml, עצם שמו ולא הכנס מה שנדרש.
לדוגמה, נניח שברצוננו להריץ סקריפט גיבוי כל יום בשעה 02:00 בבוקר. קובץ יצטרך להיראות כך:
# backup script
0 2 * * * root /usr/local/bin/backup.sh
יצירת קובץ ב-cron.daily
- כפי שעשיתם מקודם, חיבור למערכת כ-root.
- עבור לתיקיית
/etc/cron.daily. - צרו סקריפט חדש, למשל
backup-daily.sh.
#!/bin/sh
/usr/local/bin/backup.sh
ודאו להעניק הרשאות ריצה לקובץ:
chmod +x /etc/cron.daily/backup-daily.sh
ניהול לוגים של Cron
מניסיונם של משתמשים, לעיתים נרצה לבדוק את ביצועי משימות Cron. קיימת אפשרות לבדוק הכניסות של לוגים לצורך ניתוח. ברוב הס distributions, לוגים אלו נשמרים ב- /var/log/syslog או ב- /var/log/cron.
מהלוגים ניתן לדעת אם הפקודות הצליחו או לא, ובמידה ולא, תתכן סיבה נוספת לכך. גם ניתוח זה יכול המסייע במקרים של בעיות שהן "לא חלקות".
בעיות נפוצות בשימוש ב-Cron
-
הרשאות: בבדיקת הסקריפטים שלנו, האם ישנה בעיית הרשאות או נגישות לאתר? חשוב לבדוק אם הסקריפטים הם פתוחים להרצה על ידי המשתמש הנכון.
-
סביבות משתנות: כאשר שורת הפקודה שבסקריפט אינה מציינת בדיוק את הקבצים שידועים, קרוב לוודאי כי יש בעיית PATH.
- התאמה לזמן: האם השעות והיומנים שהוגדרו תואמים לצרכים? כדאי לוודא שאין בעיות של רצועות זמן או חגים.
יתרונות השימוש ב-Cron
-
אוטומטיזציה: Cron מייתר את הצורך לבצע משימות ידניות, מאפשר לאנשי צוות להתמקד במשימות אחרות.
-
גמישות: ניתן ליצור סקריפטים מתקדמים שיכולים להיות מופעלים בזמנים שונים, מול כיוונים שונים.
- יכולת ניהול מתקדמת: יכולת להפעלת משימות ברמות שונות (ממערכת או משתמש), דבר שמקנה גמישות רבה.
סיכום
שימוש ב-Cron, ובמיוחד בתפריטים כ-cron.d ו-cron.daily, נותן ליועצים טכניים ומנהלי רשתות כלי רב-עוצמה עבור ניהול וביצוע משימות בצורה יעילה. הפשטה של הליך ההפעלה, הגמישות והיכולת לניהול משימות מתקדמות מעלה את רמת מערכת ההפעלה ומפשטת תהליכים. לניהול נכון של משימות אלו, חשוב להבין את טבלאות הזמן השונות ואת הסביבות הפנימיות של הפקודות.