משימות Linux ברקע אוטומטית במרווחים קבועים באמצעות פקודת Crontab.
טיפול בעבודה תדירה ידנית הוא משימה מסובכת למנהלי מערכות ומשימות כאלו יכולות להיות מתוזמנות ומופעלות באופן אוטומטי ברקע בלי התערבות בני אדם באמצעות דימון cron במערכת Linux או במערכת דומה למערכת Unix.
גיבוי מערכת Linux, קביעת עדכונים במתוזמנת, וסנכרון קבצים, ועוד רבים ניתן לאוטומט בעזרת דמון קרון, שמשמש להרצת משימות מתוכנתות מרשות הפקודות או להשתמש בכלים מקוונים ליצירת משימות קרון.
קרון מתעורר כל דקה ובודק משימות מתוזמנות בצורה סדרתית – קרונטאב (CRON TABle) הוא טבלה בה ניתן לקבוע משימות כאלו.
טיפים: כל משתמש יכול להגדיר את הקרונטאב האישי שלו כדי ליצור, לשנות ולמחוק משימות. ברירת המחדל cron מופעל עבור המשתמשים, אך אפשר להגביל משתמשים על ידי הוספת רשומה בקובץ /etc/cron.deny.
קרונטאב ב-Linux
הקובץ Crontab מכיל פקודות בכל שורה וכולל שש שדות בעצם המופרדים או ברווח או בטאב. השדות החמישה הראשונים מייצגים את הזמן להרצת המשימות והשדה האחרון הוא עבור הפקודה.
- דקה (ערכים בין 0-59)
- שעה (ערכים בין 0-23)
- יום בחודש (ערכים בין 1-31)
- החודש בשנה (ערכים בין 1-12 או Jan-Dec, ניתן להשתמש באותיות הראשונות של שלושת החודשים i.e Jan או Jun.)
- יום בשבוע (ערכים בין 0-6 או Sun-Sat, ניתן גם להשתמש באותיות הראשונות של שלושת ימי השבוע i.e Sun או Wed. )
- פקודה – הנתיב/לפקודה או לתסריט שברצונך לתזמן.
1. רשימת רשומות Crontab
רשימה או ניהול המשימה עם פקודת crontab עם אפשרות -l
עבור המשתמש הנוכחי.
# crontab -l 00 10 * * * /bin/ls >/ls.txt
2. עריכת רשומות Crontab
כדי לערוך את רשומת ה-crontab, השתמש באפשרות -e
המוצגת למטה. הדוגמה למטה תפתח עבודות מתוזמנות בעורך VI. עשה את השינויים הנדרשים וצא בלחיצה על המקשים :wq
שמצילים את ההגדרה באופן אוטומטי.
# crontab -e
3. רשימת עבודות Cron מתוזמנות של משתמש
כדי לרשום את העבודות המתוזמנות של משתמש מסוים בשם tecmint באמצעות האפשרות -u
(User) ו--l
(List).
# crontab -u tecmint -l no crontab for tecmint
הערה: רק משתמש root יש לו הרשאות מלאות לראות את רשומות ה-crontab של משתמשים אחרים. משתמשים רגילים לא יכולים לראות אחרים.
4. הסרת רשומת Crontab
זהירות: Crontab עם הפרמטר -r
יסיר עבודות מתוזמנות מלאות ללא אישור מ-crontab. השתמש באפשרות -i
לפני מחיקת רשומת ה-crontab של המשתמש.
# crontab -r
5. בקשה לפני מחיקת Crontab
קרון טב עם האפשרות -i
תבקש אישור מהמשתמש לפני מחיקת קרון המשתמש.
# crontab -i -r crontab: really delete root's crontab?
6. תווים מיוחדים מותרים (*, -, /, ?, #)
- כוכב(*) – מתאים לכל הערכים בשדה או לכל ערך אפשרי.
- מקף(-) – להגדיר טווח.
- לוכסן (/) – שדה ראשון /10 משמעותו כל עשר דקות או תיקול בטווח.
- הפסיק (,) – להפריד פריטים.
7. לוח זמנים מערכתי
A system administrator can use the predefined cron directory as shown below.
- /etc/cron.d
- /etc/cron.daily
- /etc/cron.hourly
- /etc/cron.monthly
- /etc/cron.weekly
8. לתזמן משימה לזמן ספציפי
המשימות למטה מוחקות קבצים ריקים ותיקיות מתוך /tmp בשעה 12:30 בלילה כל יום. עליך לציין את שם המשתמש כדי לבצע את פקודת הקרון. בדוגמה למטה, משתמש הroot מבצע משימת קרון.
# crontab -e 30 0 * * * root find /tmp -type f -empty -delete
9. מחרוזות מיוחדות עבור לוח זמנים נפוצים
Strings | Meanings |
---|---|
@reboot | The command will run when the system reboots. |
@daily | Once per day or may use @midnight. |
@weekly | Once per week. |
@yearly | Once per year. we can use the @annually keyword also. |
עליך להחליף חמישה שדות של פקודת הקרון עם מילות מפתח אם ברצונך להשתמש באותו הדבר.
10. פקודות מרובות עם אנדסקור כפול(&&)
בדוגמה למטה, פקודה1 ופקודה2 רצות יומיומית.
# crontab -e @daily <command1> && <command2>
11. לבטל התראות באימייל.
במצב ברירת המחדל, cron שולח דואר אל חשבון המשתמש שמריץ את ה cronjob. אם ברצונך להשבית את זה, הוסף את ה cron job שלך בדומה לדוגמה הבאה. בשימוש באפשרות >/dev/null 2>&1 בסוף הקובץ תפנה את כל הפלט של תוצאות ה cron לתוך /dev/null.
[root@tecmint ~]# crontab -e * * * * * >/dev/null 2>&1
מסקנה: אוטומציה של משימות עשוייה לעזור לנו לבצע את המשימות שלנו בדרכים טובות יותר, ללא שגיאות ובאופן יעיל. ניתן לעיין בדף המדריך של crontab למידע נוסף על ידי הקלדת הפקודה 'man crontab' בטרמינל שלך.
Source:
https://www.tecmint.com/11-cron-scheduling-task-examples-in-linux/