Сейчас 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 *"