crontab - это команда, которая позволяет вам периодически выполнять команды через определенные промежутки времени с тем преимуществом, что вам нет необходимости входить в систему. crontab отправит вам письмо с отчетом о выполнении вашей команды. Вы можете указывать интервалы в минутах, часах, днях и даже месяцах. В зависимости от указанных опций, crontab будет работать по-разному:
Давайте начнем с редактирования crontab'а. Если вы введёте команду crontab -e, перед вами окажется ваш любимый текстовый редактор, если у вас установлена переменная окружения EDITOR или VISUAL, в противном случае будет использован Vi. Строка в файле crontab состоит из шести полей. Первые пять полей - это интервалы времени в минутах, часах, днях, месяцах и днях недели соответственно. Шестое поле - это выполняемая команда. Строки, начинающиеся с # - это комментарии, они будут проигнорированы демоном crond (программой, отвечающей за выполнение заданий из crontab). Вот пример файла crontab:
# Если вы не хотите получать почту, просто # закомментируйте следующую строку #MAILTO="ваш_адрес_email" # # Уведомление о новых изображениях каждые 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 17:30 # Теперь перед вами приглашение "at" at> xmessage "Пора идти! Встреча в 18:00" # Нажмите CTRL-d для выхода at> <EOT> $ |
Указывать время можно разными способами:
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).