cron
Программа-демон, предназначенная для выполнения заданий в определенное время, или через определенные промежутки времени.
Для редактирования заданий используется утилита crontab.
Листинг
Нельзя изменять файл расписания, просто открыв его в текстовом редакторе. Для его редактирования необходимо использовать команду crontab -e.
Простой пример файла расписания. Создание снимка экрана каждый час:
SHELL=/bin/bash
MAILTO=username
0 0-23 * * * scrot
Основные настройки
Выбор среды для исполняемых задач:
SHELL=/bin/bash
Имя пользователя, которому будет послано сообщение о выполнении задания:
MAILTO=username
Вместо имени, также можно использовать электронный адрес:
[email protected]
Не обязательные настройки
Задаем каталог пользователя:
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
Этот ключ позволяет выполнять вышеописанные действия для конкретного пользователя:
-u username
Примеры
Каждую минуту:
* * * * *
Каждый час, с использованием переменных 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 *
Новый год :
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 – номер монитора
Для редактирования заданий используется утилита crontab.
Листинг
Нельзя изменять файл расписания, просто открыв его в текстовом редакторе. Для его редактирования необходимо использовать команду crontab -e.
Простой пример файла расписания. Создание снимка экрана каждый час:
SHELL=/bin/bash
MAILTO=username
0 0-23 * * * scrot
Основные настройки
Выбор среды для исполняемых задач:
SHELL=/bin/bash
Имя пользователя, которому будет послано сообщение о выполнении задания:
MAILTO=username
Вместо имени, также можно использовать электронный адрес:
[email protected]
Не обязательные настройки
Задаем каталог пользователя:
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
Этот ключ позволяет выполнять вышеописанные действия для конкретного пользователя:
-u username
Примеры
Каждую минуту:
* * * * *
Каждый час, с использованием переменных 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 *
Новый год :
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 – номер монитора