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).