מה עושים כשצריך להריץ Cron רק כשמחשב דולק
Cron: מה זה ולמה אנחנו צריכים אותו?
Cron הוא כלי עוצמתי במערכות הפעלה מבוססות יוניקס, שמאפשר לנו לתכנן משימות שירוצו אוטומטית בזמנים קבועים. ברוב המקרים, Cron עובד כאשר המחשב פועל, מה שהופך אותו לבחירה מצוינת למשימות מאוחסנות כמו גיבויים, עדכונים של מערכת, או הפעלת סקריפטים בתדירות קבועה.
כשהמחשב כבוי, Cron לא יפעל, ולכן ישנם מקרים בהם נדרש לוודא ש- Cron ירוץ רק כאשר המחשב דולק. במאמר זה נבחן כיצד ניתן להקים משימות Cron שיבוצעו אך ורק כשיש חשמל למחשב.
הבנת השחזור של Cron במצב כיבוי
כשהמחשב דולק ונכנס למצב שינה, Cron יכול להפעיל את המשימות המתוכננות שפספס במהלך הזמן שאינו פעל. כיום, רוב המחשבים מציעים אפשרות "Wake on LAN", המאפשרת למחשב להתעורר אוטומטית ולמלא משימות גם בזמן שהוא נמצא במצב חיסכון באנרגיה.
על מנת שהשימוש ב-Cron יהיה אפקטיבי, יש לוודא שהמחשב מצליח להיכנס למצב חיסכון באנרגיה בלי להפסיד משימות קריטיות.
תכנון משימות עם Cron
כאשר מתכננים משימות ב-Cron, יש להתחשב בפרמטרים שונים:
- תדירות: קבעו אילו משימות יחזרו על עצמן וכמה פעמים במהלך היום.
- שעות הרצה: קבעו בשעות שהמחשב צפוי להיות דולק.
- תנאים נוספים: למשל, רק על סמך נוכחות קובץ או שינויים במערכת.
מבנה פקודת Cron
מבנה פקודות Cron הוא כדלקמן:
* * * * * /path/to/your/script
כאשר:
- הראשון – דקות (0-59)
- השני – שעות (0-23)
- השלישי – יום בחודש (1-31)
- הרביעי – חודש (1-12)
- חמישי – יום בשבוע (0-6, כאשר 0 הוא יום ראשון)
בדיקות נוכחות של מערכת
אחת השיטות להבטיח ש-Cron ירוץ רק כאשר המחשב פעיל היא ליצור סקריפט שיבדוק האם יישום מסויים פועל לפני הרצת המשימה. לדוגמה:
#!/bin/bash
if pgrep "process_name" > /dev/null
then
/path/to/your/actual/script
fi
סקריפט זה יוודא שהמשימה תבוצע רק אם התהליך מזהה.
הגדלת עמידות המשימות
עוד אופציה היא להוסיף תנאים נוספים לפני הריצה, כך שהמשימה לא תיכשל אם המחשב יכבה. לדוגמה:
#!/bin/bash
if [ "$(pgrep 'process_name')" ]; then
/path/to/your/script
else
echo "Process not running"
exit 1
fi
כאן, הסקריפט בודק אם התהליך רץ, ואם לא, הוא מדווח על כך בלקיחת פעולה.
הפעלות של משימות בצורה מחזורית
כדי להפעיל משימות בצורה מחזורית, השתמשו בפקודות יומיות. לדוגמה:
0 0 * * * /path/to/some/script.sh
משמעות זה היא שהסקריפט ירוץ בכל יום בדיוק בחצות.
הפסקות ועמידות
באופן כללי, אנו לא יכולים להבטיח שהמחשב יהיה תמיד דולק. לכן, כדאי לחשוב על פתרונות גיבוי. אחת הדרכים להגדיר הפסקות היא להשתמש בכלים כמו systemd
המאפשרים לתכנן הפעלות המשימות בפיקוח.
במקביל לקביעת משימות באמצעות Cron, ניתן להפעיל שירותים אחרים שיבדקו אם המחשב דולק וכלולים במערכת שתדווח במצב.
בנייה של שירות באמצעות SystemD
אם אתם מעוניינים להפעיל שירותים או סקריפטים שבויים על ידי Cron, שימוש ב-systemd יכול להיות הפתרון האולטימטיבי.
יצירת קובץ שירות
כדי ליצור שירות ב-systemd, יש ליצור קובץ חדש בנתיב /etc/systemd/system/
, לדוגמה:
/etc/systemd/system/mycron.servstart
וכתבו את התוכן הבא:
[Unit]
Description=My Cron Job
[Servstart]
Type=simple
ExecStart=/path/to/your/script
[Install]
WantedBy=multi-user.target
הפעלת השירות
להתקין את השירות, השתמשו בפקודה:
sudo systemctl enable mycron.servstart
לאחר מכן, אם תרצו להפסיק את השירות, תוכלו להשתמש בפקודת systemctl stop
.
שימוש ב-Wake on LAN
אחד מהחידושים המבטיחים הוא האפשרות להפעיל מחשבים מרחוק באמצעות Wake on LAN. זה מאפשר למחשב להתעורר בהנחה שצריך לבצע משימות מסוימות כשיש צורך. יש לחבר את המחשב לרשת ולוודא שהאפשרות מאפשרת את זה בהגדרות BIOS.
תכנון משימות בקלט
חשוב לתכנן משימות כך שלא ידרשו קלט ידני כאשר המחשב מעוניין לשכב, לדוגמה, בעת חיסכון באנרגיה. התאימו את הסקריפטים כך שיהיו אוטומטיים וימנעו מהצורך במגע ידני.
קיום של גיבויים
גיבוי הוא אחד מהדברים החשובים ביותר במערכות מידע. ניתן להגדיר משימה של גיבוי באמצעות Cron שתתבצע על פי המידע הנדרש. גיבוי של קבצים שיינתן בכל יום שני בשעה 2:00 הוא כדלקמן:
0 2 * * 1 /path/to/backup/script.sh
ניהול יומנים
כדי לעקוב אחר פעילות Cron, חשוב לשמור יומני רישומים של המשימות הפועלות. כך תדעו מתי וכיצד הריצו את הסקריפטים והאם הם הצליחו או לא.
אפשרות לתעד את הפלט
המשימות שמוגדרות צריכות לתעד את הפלט שלהן ביומנים:
/path/to/script.sh >> /var/log/mycron.log 2>&1
שיטת תיעוד כזו תסייע כאשר קיים Debug צורך או עבור בדיקות עתידיות.
פתרונות נוספים
כל הפתרונות הנ"ל פועלים על מנת לייעל את הרצת המשימות כאשר המחשב דולק. מאידך, ישנם כלים אחרים שאפשר לשלב יחד עם Cron בכדי לייעל את השימוש:
- Anacron: המשך של Cron עבור משימות שלא פעלו בזמן שהמחשב היה כבוי.
- Quartz Scheduler: תוסף שמיועד לפעולות מורכבות ומתקדמות יותר.
באופן כללי, האפשרויות הן רבות, ועם כל טכנולוגיה שמתקדמת, כדאי להימנע מהתמחות באופציה אחת בלבד, אלא לשלב בין שיטות וכלים כדי למקסם את התוצאה.
סיכום
לדעת כי Cron הוא כלי חשוב שניתן להגדיר בו משימות יומיות ומורכבות כשהמחשב דולק, אך יש לעבוד לצידו גם עם פתרונות נוספים שיבטיחו שתהליכים קריטיים ייחשבו ויבוצעו גם במצבים מיוחדים.