Сейчас 127 заметки.

Настройка планировщика задач сron в Linux(Debian)

Материал из ЗАметки

Бывают случаи, когда вам нужно создать расписание выполнимых задач на сервере. Предположим что вы хотите сделать резервную копию на жесткий диск раз в неделю, или вы хотите запустить скрипт в 6 часов утра каждый день. Все эти задачи, которые вы хотите запустить в определённый интервал времени, могут быть настроены с помощью Cron. Демон Cron давно используется там, где нужно выполнять команды пользователя в определённые промежутки времени. Это руководство представляет собой учебник в котором шаг за шагом описывается как можно планировать такие задачи, используя программу с названием Crontab.

Настройка crontab на самом деле очень проста.

Для редактирования расписания crontab используйте следующую команду

1.# crontab -e

Если редактор по умолчанию не определен, то вы увидите сообщение об ошибке:

1./bin/sh: /bin/vi: No such file or directory
2.crontab: "/bin/vi" exited with status 127

Для того чтоб определить используемый редактор по умолчанию, выполним 1.# export EDITOR=vim

Теперь Vim будет использоваться как редактор по умолчанию. Вы можете использовать любой редактор на ваш выбор, например (emacs, nano и т.д.).

1.* * * * * команда/которая/должна/быть/выполнена
2.| | | | |
3.| | | | ----- День недели (0 - 7) (Воскресение=0 или 7)
4.| | | ------- Месяц (1 - 12)
5.| | --------- День месяца (1 - 31)
6.| ----------- Час (0 - 23)
7.------------- Минуты (0 - 59)

Предположим, вы хотите запускать скрипт каждый час

1.0 * * * * /root/script.sh

Выполнение команды каждые 10 минут

1.*/10 * * * * command

Выполнение команды в 5 часов утра

1.0 5 * * * command

Выполнение команды каждые выходные в 2 часа утра

1.0 2 * * 5-7 command

Выполнение команды в субботу

1.0 2 * * sat command

Отключение отправки Email

По умолчанию crontab отправляет email для root каждый раз при выполнении задания, вы можете отключить это. Вам нужно всего лишь направить вывод на псевдоустройство /dev/null — это, своего рода, "черная дыра" в системе. В Unix-подобных операционных системах, /dev/null представляет собой специальный файл, который удаляет все данные, записанные в него.

1.0 * * * * /root/script.sh > /dev/null 2>&1

Вы можете определить переменную MAILTO, чтобы отсылать почту на определенный адрес электронной почты.

1.MAILTO="test@example.com"

Но использование MAILTO будет отсылать результат всех cronjobs. Предположим, вы хотите получить результат одного задания cronjob. Вы можете сделать это с помощью mailx. Убедитесь, что mailx установлен.

1.# yum install mailx #Для Fedora
2.# sudo apt-get install mailx #Для Ubuntu
1.*/10 * * * * /root/script.sh 2>&1 | mail -s "Output From Cron Job" username@example.com

Быстро удалить все задания Crontab можно с помощью

1.# crontab -r

В cronjob применяются восемь специальных строк, которые могут также использоваться, чтобы сделать вид файл более читабельным

1.@reboot Run at startup
2.@hourly Run at "0 1 1 * *" 
3.@daily Run at "0 0 * * *" 
4.@midnight Run at "0 0 * * *" 
5.@weekly Run at "0 0 * * 0"
6.@monthy Run at "0 0 1 * *"
7.@yearly Run at "0 0 1 1 *"
8.@annually Run at "0 0 1 1 *"