Cron & crontab, הסביר

לוסיין פורסם לפני כמה זמן הדרכה מצוינת על cron ו- crontab שלדעתי כדאי לשתף. Cron הוא סוג של שווה ערך למשימות מתוזמנות ב- Windows, רק שהוא מטופל מהטרמינל. מי שמעדיף ממשק ויזואלי להשגת אותה מטרה, יכול לראות זאת עוד פריט.

מה זה קרון?

השם cron מקורו ב- chronos היווני שפירושו "זמן". במערכת ההפעלה יוניקס, cron הוא מנהל תהליכי רקע רגיל (daemon) שמריץ תהליכים או סקריפטים במרווחי זמן קבועים (למשל, כל דקה, יום, שבוע או חודש). התהליכים שיש לבצע והשעה שבהם יש לבצע מוגדרים בקובץ crontab.

עבודות קומו

הדמון של הכתר מתחיל מ /etc/rc.d/ o /etc/init.d תלוי בחלוקה. קרון רץ ברקע, בודק את טבלת המשימות של crontab בכל דקה / etc / crontab ב / var / spool / cron בחיפוש אחר משימות שיש לבצע. כמשתמש אנו יכולים להוסיף פקודות או סקריפטים עם משימות לקרון כדי להפוך תהליכים אוטומטיים. זה שימושי למשל לאוטומציה של עדכון מערכת או מערכת גיבוי טובה.

Artaculo relacionado:
הדרכה: התקן את חבילות .tar.gz ו- .tar.bz2

מה זה Crontab?

Crontab הוא קובץ טקסט פשוט המאחסן רשימת פקודות לביצוע בזמן שצוין על ידי המשתמש. Crontab יוודא את התאריך והשעה שבהם יש לבצע את הסקריפט או הפקודה, הרשאות הביצוע והיא תעשה זאת ברקע. לכל משתמש יכול להיות קובץ crontab משלו, למעשה ה- / etc / crontab ההנחה היא שהיא קובץ ה- crontab של משתמש השורש, כאשר משתמשים רגילים (ואפילו שורש) רוצים ליצור קובץ crontab משלהם, נשתמש בפקודה crontab.

Crontab היא הדרך הקלה ביותר לנהל משימות cron במערכות רב משתמשים, כמשתמש מערכת פשוט או כמשתמש שורש.

באמצעות crontab

אנו מתחילים בדוגמה פשוטה.

אנו הולכים לבצע אוטומציה של עדכון המערכת, כדי לבטל את המעצבן של "אני תמיד צריך לעדכן ואני לא אוהב את זה!"

איך
Artaculo relacionado:
פקודות להכרת המערכת (זיהוי חומרה ותצורות תוכנה מסוימות)

קודם כל נכין תסריט. סקריפט זה ייקרא על ידי cron ויכיל את כל ההוראות שנרצה שיעשה, לכן יש צורך לבדוק אותו בכמה מקרים ובכמה דרכים לפני הכללתו ב- cron, סקריפט עדכון פשוט כזה:

#! / bin / bash # דוגמה לעדכון הסקריפט # בחר את ההפצה שלך # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu

הסר את ה- # מקו ההפצה שלך. במקרה שמדובר באובונטו / דביאן, זה מתחיל עם apt-get.

אנו שומרים את הסקריפט כ- update.sh (למשל, ספריות סקריפטים בביתך). אנו משנים את הרשאות הביצוע של התסריט האמור באמצעות:

chmod a + x ~ / scripts / update.sh

אנו מריצים את הסקריפט כמה פעמים כדי לוודא שהכל פועל בצורה חלקה, אנו משנים את הדרוש (אסור להכיל שגיאות, אחרת cron רק יחזור על שגיאה שוב ושוב). עכשיו כדי להוסיף את המשימה לקרונטאב שלנו.

הוסף משימות ל- crontab

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

# mh פקודת משתמש dom mon dow

איפה:

  • m תואם את הרגע בו התסריט יבוצע, הערך נע בין 0 ל -59
  • h בזמן המדויק, מטפל בתבנית 24 שעות, הערכים נעים בין 0 ל -23, כאשר 0 הם 12:00 בחצות.
  • dom מתייחס ליום בחודש, למשל אתה יכול לציין 15 אם אתה רוצה לרוץ כל 15 יום
  • dow פירושו יום השבוע, זה יכול להיות מספרי (0 עד 7, כאשר 0 ו -7 הם יום ראשון) או שלוש האותיות הראשונות של היום באנגלית: שני, ג ', יום רביעי, יום חמישי, יום שבת, שמש.
  • המשתמש מגדיר את המשתמש שיבצע את הפקודה, זה יכול להיות שורש, או משתמש אחר כל עוד יש לו הרשאות לבצע את הסקריפט.
  • הפקודה מתייחס לפקודה או לנתיב המוחלט של התסריט לבצע, לדוגמא: /home/usuario/scripts/update.sh, אם הוא מכנה סקריפט, הוא חייב להיות בר-הפעלה

כדי להיות ברור כמה דוגמאות למשימות cron מוסברות:

15 10 * * * user /home/user/scripts/update.sh

הוא יפעיל את סקריפט update.sh בשעה 10:15 בכל יום

15 22 * * * user /home/user/scripts/update.sh

הוא יפעיל את סקריפט update.sh בשעה 10:15 בכל יום

00 10 * * 0 עדכון root apt-get -y משתמש שורש

זה יפעל עדכון בכל יום ראשון בשעה 10:00 בבוקר

45 10 * * עדכון sun root apt-get -y

משתמש שורש יפעיל עדכון בכל יום ראשון (א ') בשעה 10:45 בבוקר

30 7 20 11 * משתמש / home/usuario/scripts/update.sh

ב -20 בנובמבר בשעה 7:30 המשתמש יריץ את הסקריפט

30 7 11 11 משתמש שמש /home/usuario/scripts/pastel_con_velitas.sh

ב- 11 בנובמבר בשעה 7:30 בבוקר וזה יום ראשון, המשתמש יחגוג את הסיסמין שלו (כלומר אני)

01 * * * * user /home/usuario/scripts/molestorecordatorio.sh

תזכורת מעצבנת כל דקה בכל שעה בכל יום (לא מומלץ).

עדיין ניתן לטפל בהם טווחים מיוחדים:

30 17 * * 1,2,3,4,5

בשעה 5:30 אחר הצהריים כל יום מיום שני עד שישי.

00 12 1,15,28 * *

בשעה 12 בצהריים בכל ראשון, חמש עשרה ו -28 בכל חודש (אידיאלי לשכר עבודה)

אם זה מבלבל, ידיות crontab מחרוזות מיוחדות להגדרת טווחים אלה.

@reboot הפעל פעם אחת, בעת ההפעלה
@yearly פועל רק פעם בשנה: 0 0 1 1 *
@ זהה לזה של @yearly
@monthly פועל פעם בחודש, היום הראשון: 0 0 1 * *
@ שבועי שבועי הרגע הראשון של השעה הראשונה בשבוע. 0 0 * * 0 ″.
מדי יום @ מדי יום, בשעה 12:00 בבוקר. 0 0 * * *
@ Midnight אותו דבר כמו @ Daily
@ שעה ברגע הראשון של כל שעה: 0 * * * *

השימוש בו פשוט מאוד.

משתמש @hourly /home/user/scripts/molestorecordatorio.sh @monthly user /home/user/scripts/backup.sh @ שורש יומי apt-get update && apt-get -y upgrade

אחרון חביב:

ניהול עבודות קרון

קובץ crontab

החלף את קובץ ה- crontab הקיים בקובץ שהוגדר על ידי המשתמש

-e crontab

ערוך את קובץ ה- crontab של המשתמש, כל שורה חדשה תהיה משימה חדשה של crontab.

crontab -l

ציין את כל משימות ה- crontab של המשתמש

crontab -d

מחק את קוד הכניסה של המשתמש

crontab -c dir

מגדיר את ספריית crontab של המשתמש (זו חייבת להכיל הרשאות כתיבה וביצוע של המשתמש)

משתמש crontab -u

קידומת לטיפול בכרטיסיית המשתמש האחרת, דוגמאות:

$ sudo crontab -l -u root $ sudo crontab -e user2 #crontab -d -u user

ניתן לראות כלי זה, כמו רבים אחרים, לעומק ובפירוט רב יותר:

תודה לוקיין!