כיצד לתזמן משימות בלינוקס עם Cron ו- Crontab

כיצד לתזמן משימות בלינוקס עם Cron ו- Crontab

האם ידעת ש להב ראנר נקבע בשנת 2019? זה שלוש שנים מהיום! לא להזכיר בחזרה לעתיד 2 , שם הם נוסעים בזמן קדימה לתוך 2015. ובכל זאת אין לנו מכוניות מעופפות ואין בינינו רפליקנטים (למיטב ידיעתי).





קל להרגיש מאוכזב מהטכנולוגיה הנוכחית כאשר אנו משווים אותה לתיאורים עתידיים בדיוניים. ובכל זאת, בימים אלה הטלפונים, המחשבים ואפילו הבתים שלנו יכולים לעשות דברים מדהימים. היכולת להפוך משימות לאוטומטיות היא אחת מהן.





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





overclock פטל pi 3 b+

מהו קרון?

קרון הוא שירות מערכת הפועל ברקע, בודק אם יש משימות מתוזמנות ומבצע אותן אם הוא מוצא. המשימות - הנקראות גם 'עבודות cron' - מוגדרות בקבצי תצורה מיוחדים (crontabs), אותם cron סורק כל דקה. ניתן למצוא מספר גרסאות של cron בהפצות לינוקס שונות. לדוגמה, קוראים למזלג הקרון של פדורה קרוני , ויש גם fcron , bcron , ו dcron . לחלקן יש תכונות נוספות, בעוד שאחרות מתמקדות יותר באבטחה, אך כולן מבוססות על אותו רעיון.

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



מהו קרונטאב?

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

למעשה, יש כמה crontabs במערכת שלך. לכל משתמש יש את crontab שלו, כולל root (מנהל המערכת). Crontabs של משתמשים מאוחסנים ב-





/var/spool/cron/crontabs/

. ה

crontab -l

הפקודה תפרט את קובץ crontab עבור המשתמש הנוכחי. אתה יכול לבדוק את crontab השורש עם





sudo crontab -l

.

בנוסף, יש את קובץ crontab המערכת

/etc/crontab

המשמש למשימות חובקות מערכת. בדרך כלל, הם לובשים צורה של סקריפטים הפועלים בבעלות שורש המוצבים בתוכם

/etc/cron.hourly/

,

/etc/cron.daily/

,

/etc/cron.weekly/

, ו

/etc/cron.monthly/

בתיקיות, ובחלק מההפצות,

/etc/cron.d/

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

כיצד לתזמן משימות באמצעות Cron

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

crontab -e

פקודה. כדי לערוך root או crontabs של משתמשים אחרים, הפעל את הפקודה עם הרשאות ניהול והוסף את שם המשתמש שלהם לאחר האפשרות -u:

sudo crontab -u root -e
sudo crontab -u username -e

לקובץ crontab שני חלקים. הראשון מכיל משתני סביבה המוגדרים באופן אוטומטי. תוכל לשנות בבטחה את משתני PATH, HOME ו- SHELL ולשנות את משתנה MAIL.

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

כדי לתזמן משימות בהצלחה, עליך לדעת מעט על תחביר crontab:

  • המספרים צריכים להיות מספרים שלמים (מספרים שלמים), ותוכל להשתמש בכוכבית (*) בכל אחת מהעמודות בתור תו כללי, כלומר 'כל דקה/יום/חודש ...'.
  • בעמודה 'יום בחודש', הקפד לא להגדיר תאריך שאינו מתרחש בחודש שצוין בעמודה 'חודש' (לדוגמה, 30 בפברואר).
  • הטור 'חודש' וגם 'יום בשבוע' מקבלים שמות קצרים במשך חודשים וימים בהתאמה, והם אינם רגישים לאותיות.
  • בטור 'יום בשבוע', שניהם 0 ו -7 עומדים ליום ראשון. העמודה 'שעה' דורשת את פורמט 'הזמן הצבאי' (24 שעות), אך אינך יכול להשתמש במספר 24-במקום זאת, 0 מייצג 12 בבוקר זה מכיוון שהערכים לדקה, שעה ויום בשבוע מתחילים ב 0 במקום 1.
  • שניות אינן נתמכות, כך שלא ניתן לתזמן משימה בשנייה מסוימת.

מה שאתה יכול לעשות הוא לתזמן טווחי זמן כולל באמצעות מקף (14-22 תחת 'שעות' יפעיל את המשימה ברציפות בין השעות 14: 00-22: 00), או הפעל משימה אחת מספר פעמים על ידי הגדרת רשימה המופרדת בפסיקים (1, 3,5 תחת 'יום בשבוע' יפעילו את המשימה בימים שני, רביעי ושישי).

בינתיים, ערכי הצעד מיוצגים על ידי קו נטוי קדימה (/), ואלו מציינים את כמות הדילוגים בטווח; למשל, 3-20/3 תחת 'שעות' יפעיל את המשימה כל שלוש שעות בין השעות 3 בבוקר עד 8 בערב. זה שימושי כאשר אתה רוצה לחזור על משימות כל X שעות, מכיוון שאתה יכול לשלב כוכבית וצעד (*/X). אתה יכול לשלב טווחים עם רשימות ושלבים עם טווחים כל עוד אתה משתמש במספרים. במילים אחרות, שילובים כמו 'יאן-מר' או 'שלישי, שישי-ראשון' אינם מותרים.

לחלופין, במקום להגדיר ערך לכל עמודה, אתה יכול פשוט לכתוב @שבועי, @לשנה, @מדי שנה, @מדי יום, או @לשעה בתחילת שורה, ואחריה פקודה. מתוזמן כך, המשימות יופעלו במקרה הראשון האפשרי, כך @weekly יפעל בחצות היום הראשון בשבוע. אם ברצונך להריץ משימה מיד עם הפעלת המערכת (מחדש), השתמש בפקודה @reboot.

בדוגמה זו, קבענו גיבוי כל יום בשעות 08:20 ו -20:20. הטפט משתנה באופן אוטומטי כל שלושה ימים בשעה 19:00, ותסריט יבדוק פודקאסטים חדשים בכל יום שני בשעה 10:20 ו -20:20. תזכורת ליום הולדת נקבעת ל -25 במרץ והיא פועלת כל 30 דקות במסגרת הזמן שצוין. לבסוף, סקריפט בודק את הדוא'ל כל 15 דקות בין 8 ל -20, אך רק בימי עבודה. אתה רשאי לארגן את ה- crontab שלך עם רווחים וכרטיסיות בין עמודות, אך לא בתוכם (אל תשים רווחים בין פסיקים, מקפים ואלאנסים).

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

כיצד לבדוק אם מתבצעות עבודות Cron

קרון אמור לרוץ בשקט ברקע ולתת לך לעבוד ללא הפרעה בזמן שהוא מטפל במשימות שלך. אבל איך אתה יכול לוודא שזה באמת עובד?

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

cat /var/log/syslog | grep -i cron

האפשרות -i הופכת את השאילתה שלנו לבלתי רגישה. ייתכן של- cron יהיה קובץ יומן משלו אי שם

/var/log/

, אז חפש שם אם פקודה זו לא מצליחה להביא תוצאות שימושיות.

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

30 * * * * /usr/bin/yourcommand > /home/username/logfile.txt

שימוש בסמל יחיד> יחליף את הקובץ בכל פעם שהפקודה מופעלת. כדי להימנע מכך, השתמש >> במקום זאת - הוא מצרף את הפלט לקובץ הקיים.

מה אם קרון לא עובד?

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

האם שירות cron פועל?

כידוע, שדון cron אמור לפעול ברקע. וודא שזה באמת המצב. השירות נקרא crond או פשוט cron.

להפצות באמצעות systemd:

systemctl status cron

להפצות באמצעות Upstart:

service cron status

אם ההפצה שלך משתמשת בגישה הישנה של System V init, רשום את כל השירותים עם:

xbox one לא יתחבר לבקר
initctl list

ובדוק אם cron מופיע.

האם מותר לך בכלל לקבל קובץ crontab?

בדוק את

/etc

תיקייה לקבצים בשם

cron.allow

ו

cron.deny

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

כיצד לנקות מאוורר ps4
cron.allow

הקובץ, הוא חייב להכיל את שם המשתמש שלך. לעומת זאת, אם

cron.deny

הקובץ קיים, שם המשתמש שלך לא צריך להיות בו. עוזב את

cron.deny

קובץ ריק פירושו שרק שורש ומשתמשים רשומים ב-

cron.allow

יכול להיות קבצי crontab.

האם המשתנים שלך מוגדרים כראוי?

Crontab מגדיר אוטומטית את המשתנה SHELL שלך

/bin/sh

. לעומת זאת, אם הקליפה המועדפת עליך היא דג או bash, עליך לשנות את משתנה SHELL

. באופן דומה, משתנה PATH מכיל רק כמה ספריות כברירת מחדל. כאן crontab מחפש פקודות Linux. אם עבודת ה- cron שלך לא פועלת, יכול להיות שזה בגלל ש- crontab לא 'רואה' את הפקודה שבה השתמשת. כדי להימנע מכך, הוסף למשתנה PATH ספריות המכילות את הפקודות, המופרדות באמצעות נקודתיים:

PATH =/opt/myapp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

אם אינך רוצה לערוך זאת ב- crontab שלך, תוכל להגדיר משתנים אלה בתסריט שברצונך להריץ כמשרת cron.

האם העיצוב שלך ב- crontab עומד בנקודה?

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

  • הוסף שורה ריקה בסוף קובץ crontab
  • לברוח מסימן % עם נטוי לאחור אם הפקודה שלך כוללת אותו
  • כתוב הערות כשורות נפרדות המתחילות ב- #. אל תכתוב הערות על אותה שורה של משתני הסביבה, או לצד פקודות cron job.

האם אתה באמת צריך להשתמש במסוף?

בהחלט לא. משתמשי KDE יכולים לתזמן עבודות cron באמצעות KCron, הנגישה מה- הגדרות מערכת> מתזמן המשימות מודול. עם ממשק פשוט המאפשר לך לבחור ולשנות הכל בכמה לחיצות עכבר, KCron היא תענוג לשימוש.

אם אתה מעדיף את GNOME, אז לוח זמנים של GNOME בשבילך. הגישה דומה, אם כי הממשק, כצפוי, מעט שונה. הוא מציע מצב מתקדם לשינויים דקים, ומגיע עם יישומון פנל שממנו תוכל לנהל משימות ישירות.

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

האם יש חלופות Cron?

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

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

כמה גירסאות של cron, כמו fcron, מציעות את התכונות של anacron כברירת מחדל. משתמשים מתקדמים עשויים לרצות להסתכל הקרון אוֹ SuperCron , שמביאים שיפורים רבים בפונקציות cron הבסיסיות, אך גם מאתגרים במקצת.

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

קרדיט תמונה: לוח לוח זמנים מאת גונזאלו אראגון באמצעות Shutterstock

לַחֲלוֹק לַחֲלוֹק צִיוּץ אימייל 12 אתרי וידאו טובים יותר מ- YouTube

להלן כמה אתרי וידאו חלופיים ל- YouTube. כל אחד מהם תופס נישה אחרת, אך שווה להוסיף אותם לסימניות שלך.

קרא הבא
נושאים קשורים
  • לינוקס
  • לינוקס
על הסופר איוונה איזדורה דבצ'יץ '(פורסמו 24 מאמרים)

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

עוד מאת Ivana Isadora Devcic

הירשם לניוזלטר שלנו

הצטרף לניוזלטר שלנו לקבלת טיפים, סקירות, ספרים אלקטרוניים בחינם ומבצעים בלעדיים!

לחצו כאן להרשמה