Библиотека сайта 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: Поиск файлов по определенным критериям |
Архивирование и упаковка данных |

![[Note]](images/note.png)