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

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

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

# crontab -e


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

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


Для того чтоб определить используемый редактор по умолчанию, выполним

# export EDITOR=vim


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

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


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

0 * * * * /root/script.sh


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

*/10 * * * * command


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

0 5 * * * command


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

0 2 * * 5-7 command


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

0 2 * * sat command


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

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

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


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

MAILTO="test@example.com"


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

# yum install mailx #Для Fedora
# sudo apt-get install mailx #Для Ubuntu

 

*/10 * * * * /root/script.sh 2>&1 | mail -s "Output From Cron Job" username@example.com


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

# crontab -r


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

@reboot Run at startup
@hourly Run at "0 1 1 * *" 
@daily Run at "0 0 * * *" 
@midnight Run at "0 0 * * *" 
@weekly Run at "0 0 * * 0"
@monthy Run at "0 0 1 * *"
@yearly Run at "0 0 1 1 *"
@annually Run at "0 0 1 1 *"


Источник оригинального текста linuxers.org 

Добавить комментарий