**Cron** הוא כלי המשמש לתזמון עבודות במערכות הפעלה דמויות יוניקס. הכלי משמש בדרך כלל לתזמן משימות, פקודות או תסריטים במרווחים או בתאריכים קבועים, ולכן הוא נפוץ במיוחד בתחזוקה ובניהול מערכות. השם cron מגיע מהמילה היוונית לזמן, χρόνος כרונוס.

היסטוריה
--------

Cron נכתב על ידי בריאן קרניגהאן למערכת ההפעלה יוניקס גרסה 7 אשר ראתה אור בשנת 1979. המימוש בגרסה זו היה פשוט: קריאת קובץ ההגדרות, בדיקת התאמה של כל תבנית זמן, הפסקה למשך דקה וחוזר חלילה. ב-UNIX System V בשנת 1983 נוסף ל-cron התמיכה בריבוי משתמשים ומשימות ייחודיות לכל משתמש. בגרסה זו ובגרסאות נוספות שונה המימוש והתווסף אלגוריתם יעיל יותר לתזמוני המשימות.

כחלק מפרויקט גנו ולינוקס, נכתבו מספר גרסאות מודרניות של Cron. המוכר מביניהם הוא זה של פול ויקסי שנכתב בשנת 1987. גרסה 3 של cron זה נכתבה בשנת 1993, ובגרסה 4.1 בשנת 2004 שונה הפרויקט לשם ISC cron.

פעולה
-----

cron מבצע עבודות על פי קובץ *crontab*, קובץ תצורה המכיל פקודות מעטפת המופעלות על פי לוח זמנים נתון. משתמשים יכולים להיות בעלי קובץ crontab משלהם, ולעיתים קרובות קיים גם קובץ תצורה גלובאלי, בדרך כלל ב-`/etc/crontab`, אשר רק מנהלי מערכת יכולים לערוך. 
כל שורה בקובץ מייצגת עבודה, ומורכבת מביטוי CRON, ולאחריו פקודת מעטפת לביצוע. ברוב המימושים של cron, קיים גם שדה המציין את המשתמש שאיתו תרוץ העבודה, רק בקובץ הגלובאלי.

### דוגמאות

השורה הבאה מריצה תסריט פרל בשם `test.pl` בכל שעתיים:

```
0 */2 * * * /home/username/test.pl

```
השורה הבאה מריצה תסריט פרל בשם `example.pl` בכל חמש דקות:

```
*/5 * * * * /home/username/example.pl

```
השורה הבאה מריצה תסריט פרל בשם `backup.pl` בכל יום בשעה 4:30:

```
30 4 * * * /home/username/backup.pl

```

### הרשאות

כאשר הקובץ `/etc/cron.allow` קיים במערכת, רק המשתמשים הכתובים בו יכולים להריץ עבודות ב-cron. כאשר הקובץ `/etc/cron.deny` קיים, משתמשים הכתובים בו אינם יכולים להריץ עבודות ב-cron.

תחביר
-----

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

```
 ┌───────────── דקות – 0 עד 59
 │ ┌────────────── שעות – 0 עד 23
 │ │ ┌─────────────── יום בחודש – 1 עד 31
 │ │ │ ┌──────────────── חודש – 1 עד 12
 │ │ │ │ ┌───────────────── יום בשבוע – 0 עד 6
 │ │ │ │ │                ראשון עד שבת
 │ │ │ │ │
 │ │ │ │ │
 * * * * *  פקודה להרצה

```

| שדה | חובה | ערכים מותרים | תווים מותרים |
| --- | --- | --- | --- |
| דקות | כן | 0-59 | `* /, -` |
| שעות | כן | 0-23 | `* /, -` |
| יום בחודש | כן | 1-31 | `* /, - ? L W` |
| חודש | כן | 1-12 או JAN-DEC | `* /, -` |
| יום בשבוע | כן | 0-6 או SUN-SAT | `* /, - ? L #` |

### תזמונים מוגדרים מראש

ניתן להחליף כמה ערכים מוגדרים מראש בביטויי CRON.

| ביטוי | תיאור | זהה ל- |
| --- | --- | --- |
| `@yearly או @annually` | רץ פעם בשנה בבוקר ה-1 בינואר | `0 0 1 1 *` |
| `@monthly` | רץ פעם בחודש בחצות הבוקר של היום הראשון בחודש | `0 0 1 * *`  |
| `@weekly` | רץ פעם בשבוע בחצות יום ראשון | `0 0 * * 0`  |
| `@daily` | רץ פעם ביום בחצות | `0 0 * * *` |
| `@hourly` | רץ פעם בשעה בתחילתה | `0 * * * *` |
| `@reboot` | רץ בהפעלת התוכנית | - |

קישורים חיצוניים
----------------

ויקישיתוף מדיה וקבצים בנושא **Cron** בוויקישיתוף
* crontab, מתוך Single UNIX Specification
* cron באתר פרויקט גנו

הערות שוליים
------------

1. ↑  CronHowto באתר אובונטו.

| פקודות בסביבת Unix ובמערכות הפעלה דמויות יוניקס |
| --- |
| מערכת קבצים | 
bzip • cat • cd • chmod • chown • chgrp • cksum • cmp • cp • dd • du • df • file • fsck • gzip • ln • ls • mkdir • mount • mv • pwd • rm • rmdir • tar • tee •  tree • touch • umask • zip
 |
| תהליכים | 
at • chroot • cron • htop • kill • killall • nice • pgrep • pkill • ps • pstree • time • top
 |
| סביבת משתמש | 
dig • env • exit • finger • passwd • su • sudo • uptime • talk • uname • w • wall • who • whoami
 |
| עיבוד טקסט | 
awk • basename • cut • diff • ed • ex • head • less • more • paste • sed • sort • strings • tail • tr • uniq • vi • vim • wc • xargs
 |
| מעטפת | 
alias • echo • expr • printf • sleep • test • wait
 |
| רשת | 
ifconfig • inetd • ip • netcat • netstat • nload • nmap • nslookup • ping • rlogin • route • ssh • traceroute
 |
| חיפוש | 
find • grep • locate
 |
| שונות | 
man • bc • cal • date • parted • seq
 |