Cron – средство запуска программ по расписанию
В операционной системе UNIX и ей подобных для запуска программ по расписанию используется механизм, называемый cron. Данный конфигурационный файл каждую минуту просматривается cron‘ом и запускаются те программы, время запуска которых подошло.
Редактируется конфигурационный файл с помощью программы crontab. Программы, запускаемые cron, исполняются от имени пользователя – владельца соответствующего конфигурационного файла.
Установить cron можно с помощью команды: # yum install crontabs
Запустить: # service crond start
Прописать в автозагрузку: # chkconfig crond on
Как создать и отредактировать свой конфигурационный файл?
Команда # crontab -e
. Откроется редактор vi с содержимым вашего конфигурационного файла. Если это первый запуск crontab‘а, то файл будет пустой. Но редактор vi довольно сложен в использовании и требует определенного опыта и навыков.
Чтобы сменить редактор на более удобный, перед редактированием конфигурационного файла cron Вы можете выполнить команду # export EDITOR=mcedit
и добавить строку export EDITOR=mcedit в файл /home/login/.bash_profile, отредактировав его с помощью команды: # mcedit ~/.bash_profile
Что нужно писать в cron файле?
Конфигурационный файл состоит из строк, каждая из которых описывает программу, которая будет запускаться по расписанию. Каждая строка состоит из 6 полей, поля отделяются друг от друга пробелом или табуляцией. Поля имеют следующее назначение:
- Минуты (0-59)
- Часы (0-23)
- День месяца (1-31)
- Месяц в году (1-12)
- День недели (0-6, при этом 0 означает воскресенье)
- Программа, которая будет запущена
Каждое из первых 5 полей может быть записано несколькими способами:
- Символом * (означает любое значение)
- Списком через запятую (1,2,3)
- Диапазоном через тире (1-31)
- Шагом значений диапазона (например */2 означает через_раз)
Кроме того, Вы можете получать по почте результаты и ошибки выполнения программ, запускаемых демоном cron по расписанию. Для этого в конфигурационном файле напишите MAILTO=ваш_email_адрес.
Пример файла cron:
# использовать для запуска команд /bin/sh # не обращая внимание на то, что написано в /etc/passwd SHELL=/bin/sh # отправлять вывод выполнения команд по электронной почте пользователю `leon@ya.ru' # не обращая внимания на то, чей это crontab MAILTO=leon@ya.ru # # запускать пять минут пополуночи, каждый день 5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
Как запускать php скрипт из cron’a?
Строка в cron файле, запускающая php скрипт выглядит так:
* * * * * /usr/local/bin/php /home/user/www/site1/public_html/script.php
где * * * * * — установки времени, означающие что скрипт будет запускаться каждую минуту
/usr/local/bin/php – путь до php-интерпретатора (на различных серверах путь может быть разным. Выяснить путь можно с помощью команды # whereis php
);
/home/user/www/site1/public_html/script.php – путь до скрипта необходимо указывать от корня сервера.