Библиотека сайта rus-linux.net
Запуск команд по расписанию |
||
---|---|---|
Chapter 5. Утилиты командной строки |
Запуск команд по расписанию
crontab: Уведомление или редактирование вашего файла crontab
crontab - это команда, которая позволяет вам периодически выполнять команды через определенные промежутки времени с тем преимуществом, что вам нет необходимости входить в систему. crontab отправит вам письмо с отчетом о выполнении вашей команды. Вы можете указывать интервалы в минутах, часах, днях и даже месяцах. В зависимости от указанных опций, crontab будет работать по-разному:
-l
: Вывод вашего текущего файлаcrontab
.-e
: Редактирование вашего файлаcrontab
.-r
: Удаление вашего текущего файлаcrontab
.-u <пользователь>
: Применение одной из перечисленных выше опций для<пользователя>
. Это может сделать толькоroot
.
Давайте начнем с
редактирования 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
).
Теперь вашей задачей будет найти полезные команды и поместить их в
этот файл!
at: Выполнение команды по расписанию, но только один раз
Возможно, вы хотели бы выполнить какую-нибудь команду
в определённый день, но не регулярно. Например, вам нужно напомнить
себе о сегодняшней встрече в 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 допускает использование разнообразных опций:
-l
: Выводит список заданий, стоящих в очереди на выполнение. Первое поле представлет собой номер задания. Это эквивалент команды atq.-d <n>
: Удаляет из очереди задание под номером<n>
. Вы можете получить номера заданий при помощи команды atq. Это эквивалент команды atrm <n>.
Как
обычно, для получения дополнительной информации смотрите страницу
руководства
для at(1).
find: Поиск файлов по определенным критериям |
Архивирование и упаковка данных |