cron – программа-демон, предназначенная для выполнения заданий в определенное время, или через определенные промежутки времени. Для редактирования заданий используется утилита crontab.
Листинг
Нельзя изменять файл расписания, просто открыв его в текстовом редакторе. Для его редактирования необходимо использовать команду crontab -e.
Простой пример файла расписания. Создание снимка экрана каждый час:
SHELL=/bin/bash
MAILTO=username
0 * * * * scrot
Основные настройки
Выбор среды для исполняемых задач:
SHELL=/bin/bash
Имя пользователя, которому будет послано сообщение о выполнении задания:
MAILTO=username
Вместо имени, также можно использовать электронный адрес:
MAILTO=example@example.org
Не обязательные настройки
Задаем каталог пользователя:
HOME=
Задаем каталоги исполняемых фалов:
PATH=/sbin:/bin:/usr/sbin:/usr/bin
Прописываем дисплей, если запускаемый по крону скрипт должен использовать графику:
DISPLAY=:0.0
Выбор времени выполнения задания
Время запуска представляется в таком виде:
минута час день_месяца месяц день_недели команда
Значение | Диапазон | Дополнительно |
минуты | 0-59 | |
часы | 0-23 | |
дни месяца | 1-31 | |
месяцы | 1-12 | можно задавать и в 3-х буквенном варианте |
дни недели | 0-6 | можно задавать и в 3-х буквенном варианте (0=воскресенье) |
Символ ‘*’ подразумевает – любое значение.
Минимальное время 1-а минута. Это связано с тем что cron каждую минуту просматривает список заданий, и ищет которые нужно выполнить.
Дни недели и месяца в трех буквенном варианте: |
sun mon tue wed thu fri sat |
jan feb mar apr may jun jul aug sep oct nov dec |
Дополнительные переменные cron
Переменная | Описание | Эквивалент |
@reboot | Запуск при загрузке | |
@yearly | Раз в год | 0 0 1 1 * |
@annually | Тоже что и @yearly | |
@monthly | Раз в месяц | 0 0 1 * * |
@weekly | Раз в неделю | 0 0 * * 0 |
@daily | Раз в день | 0 0 * * * |
@midnight | В полночь (00:00) | |
@hourly | Каждый час | 0 * * * * |
Управление при помощи crontab
Добавление файла расписания:
crontab имя_файла_расписания
Вывести содержимое текущего файла расписания:
crontab -l
Удаление текущего файла расписания:
crontab -r
Редактирование текущего файла расписания (при первом запуске будет выведен список поддерживаемых текстовых редакторов):
crontab -e
Этот ключ позволяет выполнять вышеописанные действия для конкретного пользователя:
crontab -u username
Учтите, что -u можно воспользоваться только запуская crontab от лица суперпользователя.
Примеры
Каждую минуту:
* * * * *
Каждый час, с использованием переменных cron:
@daily ~/script.sh
Каждый день в 03:15 запускать скрипт:
15 3 * * * ~/script.sh
Каждый понедельник:
0 0 * * 1
Каждый четный час:
* */2 * * *
Тоже что и выше, но расписанное полностью:
* 0,2,4,6,8,10,12,14,16,18,20,22 * * *
Каждые 10 минут:
*/10 * * * *
Новый год :
59 23 31 dec *
Каждый будний день в 22:00:
0 22 * * 1-5
Запуск программы с графической оболочкой (GUI); каждую минуту будет отображаться сообщение с текстом «It work!»:
0-59 * * * * DISPLAY=:0 gdialog --msgbox "It work\!" 25 20 > /dev/null
* где DISPLAY=:0 – номер монитора