Планировщик заданий есть не только в Windows. У нас товарищи в Linux есть страшный и ужасный CRON. Cron — классический демон (компьютерная программа в системах класса UNIX), использующийся для периодического выполнения заданий в определённое время. Регулярные действия описываются инструкциями, помещенными в файлы crontab и в специальные директории. Конечно он уже потихоньку устаревает и на его замену приходит системы на базе systemd и его механизм systemd.timer. Но он все равно актуален и сейчас.
Каждый пользователь системы имеет свой файл заданий crontab, в котором описано, в какое время и какие программы запускать от имени этого пользователя.Так же есть и crontab файл системы. Для редактирования файла crontab используется специальная одноимённая программа crontab, позволяющая не прерывать процесс cron на время редактирования.
Вывести содержимое текущего файла расписания:
crontab -l
Удаление текущего файла расписания:
crontab -r
Для редактирования файла crontab вашего пользователя используется команда:
crontab -e
Этот ключ позволяет выполнять вышеописанные действия для конкретного пользователя:
crontab -u username
Учтите, что -u можно воспользоваться только запуская crontab от лица суперпользователя.
Основные настройки.
Выбор среды для исполняемых задач:
SHELL=/bin/bash
Имя пользователя, которому будет послано сообщение о выполнении задания:
MAILTO=username
Вместо имени, также можно использовать электронный адрес,Если нужно получать сообщения об ошибках на несколько адресов, укажите все эти адреса через запятую.
MAILTO=example@mail.com
Время запуска представляется в таком виде:
минута час день_месяца месяц день_недели команда
01 1 12 2 * ~/script.sh В 1.01 12 февраля запустить script.sh символ ‘*’ подразумевает — любое значение.
Значение | Диапазон | Дополнительно |
---|---|---|
минуты | 0-59 | |
часы | 0-23 | |
дни месяца | 1-31 | |
месяцы | 1-12 | можно задавать и в 3-х буквенном варианте |
дни недели | 0-7 | можно задавать и в 3-х буквенном варианте (0=воскресенье и 7) |
Дни недели | sun mon tue wed thu fri sat |
Месяц | jan feb mar apr may jun jul aug sep oct nov dec |
Также в cron есть переменные:
Переменная | Описание |
---|---|
@reboot | Запуск при загрузке |
@yearly | Раз в год |
@annually | Тоже что и @yearly |
@monthly | Раз в месяц |
@weekly | Раз в неделю |
@daily | Раз в день |
@midnight | В полночь (00:00) |
@hourly | Каждый час |
@daily ~/script.sh Запустить рас в день скрипт.
Для каждого конкретного параметра можно задать несколько значений через запятую. Например, если в поле «часы» написать 1,4,22, то задание будет запущено в 1 час ночи, в 4 часа утра и в 22 часа. Можно задать интервал — 4-9 будет означать, что программу нужно запускать каждый час в период с 4 до 9 часов включительно. Символ ‘/‘ служит для указания дополнительной периодичности задания. Например, ‘*/3‘ в поле «часы» означает «каждые три часа».
0 */1 * * * /home/u12345/script.sh выполнять задание раз в час в 0 минут.
Примечание: если определены оба поля «день месяца» и «день недели» (т.е не равны *), то такое задание будет выполняться в каждый указанный день недели независимо от дня месяца. Например, следующая команда будет выполняться в 13 часов 13 минут каждую пятницу и каждое 10 число месяца, даже если 10 число не совпадет с пятницей.
13 13 10 * 5 /home/u12345/script.sh
ОГРАНИЧЕНИЯ.
Для программ, которые запускаются через cron, действуют такие же ограничения по потребляемым ресурсам, как для процессов, запускаемых пользователем в unix shell. Речь идет об ограничениях на время выполнения программы, количеству доступной памяти, ограничениях на размер файлов, и так далее.