crontab дозволяє вам періодично виконувати команди через певні проміжки часу з тією перевагою, що вам немає потреби перебувати в системі. crontab відправить вам лист із звітом про виконання вашої команди. Ви можете вказувати інтервали в хвилинах, годинах, днях і навіть місяцях. Залежно від зазначених опцій, crontab працюватиме по-різному:
Давайте почнемо з редагування crontab'а. Якщо ви введете команду crontab -e, перед вами виявиться ваш улюблений текстовий редактор, якщо вас у встановлено змінну оточення EDITOR чи VISUAL, в протилежному випадку буде використано Vi. Рядок у файлі crontab складається з шести полів. Перші п'ять полів - це інтервали часу в хвилинах, годинах, днях місяцю, місяцях і днях тижня відповідно. Шосте полі - це виконувана команда. Рядки, які розпочинаються з # - це коментарі, вони ігноруються демоном crond (програмою, яка відповідає за виконання завдань з crontab). Цей формат дещо відрізняється для системного crontab'а (файл /etc/crontab). В ньому в якості шостого поля виступає ім'я користувача, яке буде використано для запуску програми з сьомого поля. Цей файл має використаний тільки для завдань адміністрування і для запуску завдань користувачів, які існують для забезпечення безпеки системи (такі як користувач демона антивірусу чи користувач для запуску серверу баз даних). Ось приклад файла crontab:
# Якщо ви не хочете отримувати пошту, просто
# закоментуйте наступний рядок
#MAILTO="ваша_електронна_адреса"
#
# Повідомлення кожні 2 дні про нові зображення о 14:00,
# з прикладу вище - після чого виконання "retouch"
# для файла "stamp". Знак "%" означає
# новий рядок, що дозволяє вам вказувати кілька команд
# в одному рядку.
0 14 */2 * * find /shared/images \
-cnewer /shared/images/stamp \
-a -iregex ".*\.jpe?g" \
-a -not -regex \
".*/old/.*"%touch /shared/images/stamp
#
# Програвання мелодії кожного Різдва :)
0 0 25 12 * mpg123 $HOME/sounds/merryxmas.mp3
#
# Кожен вівторок в 17:00 виведення списку покупок...
0 17 * * 2 lpr $HOME/shopping-list.txtІснує кілька способів вказівки інтервалів, крім тих, що ми продемонстрували в цьому прикладі. Ви можете вказати набір дискретних значень, розділених комами (1,14,23) або діапазон (1-15), або навіть комбінувати їх (1-10,12-20), а можна і з деяким кроком (1-12,20-27/2). Тепер вашим завданням буде знайти корисні команди і помістити їх у цей файл!
Можливо ви хотіли б виконати якусь команду у певний день, але тільки один раз. Наприклад, потрібно нагадати собі про сьогоднішню зустріч в 18:00. Ви працюєте в X, у вас встановлено пакет X11R6- contrib і ви хотіли б отримати нагадування, скажімо, у 17:30 про те, що час виходити. Тоді at - це саме те, що потрібно:
$ at 5:30pm # Тепер перед вами запрошення "at" at> xmessage "Time to go now! Appointment at 6pm" # Натисніть CTRL-d для виходу at> <EOT> job 1 at 2005-02-23 17:30 $
Вказувати час можна різними способами:
now +<інтервал>: означає нині + інтервал (Не обов'язковий. Відсутність інтервалу означає негайне виконання). Синтаксис для інтервалу: <n>(minutes|hours|days|weeks|months). Тут minutes - хвилини, hours - години, days - дні, weeks - тижні й months - місяці. Наприклад, ви можете вказати now + 1 hour (через одну годину), now + 3 days (через три доби) і так далі.
<time><day>: повна вказівка дати. Опція <time> (час) є обов'язковою. Її формат для at досить вільний: ви, наприклад, можете запровадити 0100, 04:20, 2am, 0530pm, 1800 чи одне з трьох спеціальних значень: noon (південь), teatime (час вечірнього чаю о 16:00) чи midnight (північ). Опція <day> (день) є необов'язковою. Ви також можете вказати її різними способами: наприклад, 12/20/2004, що відповідає двадцятому грудня 2004 року, чи за європейським стандартом, 20.12.2004. Ви можете не вказувати рік, але тоді допускається лише європейська форма запису: 20.12. Також ви можете записати місяць літерами: і Dec 20, і 20 Dec будуть правильні.
Також at допускає використання різноманітних опцій:
Як звично для одержання додаткової інформації дивіться сторінку керівництва для at(1).