Система cron, состоящая из команд cron и crontab, а также файлов соответствующего формата, используется для запуска программ в определенное время и/или с определенной периодичностью, а также по некоторым событиям, таким как, например, перезагрузка сервера.
Документация по этой системе на русском и английском языках доступна по следующим адресам:
Команда crontab (рус)(opennet.ru)
Формат файла (рус)(opennet.ru)
Команда crontab (англ)(freebsd.org)
Формат файла (англ)(freebsd.org)
Если вы не используете заранее заготовленный файл crontab, то при выполнении команды запустится текстовый редактор. По умолчанию это редактор vi — достаточно сложный в управлении. Поэтому рекомендую вам при запуске перед названием команды вставлять строку EDITOR=ee, например так:
EDITOR=ee crontab -e
Документация:
Текстовый редактор ее(рус)(www.freebsd.org.ru)
Текстовый редактор ее(англ)(freebsd.org)
Руководство в форме вопрос-ответ:
Я захожу на сервер через SSH2, Делаю следующее :
crontab -e (редактировать таблицу cron)
Вношу строку:
30 * * * * /home/username/cgi-bin/имя_программы.pl
сохраняю, выхожу.
Проверяю таблицу: crontab -l
Q. Все ли сделано правильно для того чтобы программа стартовала каждый день через каждые 30 минут?
A. Нет. При такой настройке программа будет запускаться в 30 минут каждого часа, т.е. раз в час.
Для того, чтобы она запускалась каждые полчаса, нужно вместо 30 прописать 0,30 (в 0 и 30 минут каждого часа) или */30 ( каждые 30 минут)
Q. Когда начнет работать Crontab?
A. crontab начинает работать немедленно после установки.
Q. Не будет ли сброшена моя настройка crontab после рестарта сервера?
A. Нет.
crontab при совершении события шлет почту на ящик заведенный на виртуальном сервере по умолчанию.
Q.Но у меня ситуация следующая - серверов много и соответственно ящиков по умолчанию тоже. Реальная же ситуация такова, что все почтовые ящики я держу на своем главном сервере www.example.com. И мне не хотелось бы заводить лишние ящики только для приема и удаления сообщений от crontab со всех серверов. Каким образом можно или отключить посылку сообщений на ящик от crontab, или прописать почтовый ящик по умолчанию на всех серверах один , например info@example.com
A.Во всех crontab в начале пропишите для отключения посылки сообщений
MAILTO=""
для посылки их на определенный адрес
MAILTO="определенный@адрес"
Q.Но мне нужен не cron, нужно запускать скрипт после перезагрузки сервера.
A.Тогда ставите вместо пяти цифр строку "@reboot" - например так:
@reboot /home/username/cgi-bin/имя_программы.pl
Q. А можно ли вообще пользоваться crontab?
A. (этот вопрос, видимо, должен быть первым :-)
Очевидно, да :))
Запуск сgi и php скриптов по cron
Если на вашей виртуальной машине установлен интерпретатор PHP в виде отдельного исполняемого модуля, то вы можете просто воспользоваться такой командой: /usr/local/bin/php /usr/local/apache/htdocs/path/to/script.php, что в crontab будет выглядеть примерно так:
*/30 * * * * /usr/local/bin/php /usr/local/apache/htdocs/path/to/script.php
Если же такого интерпретатора нет, а выяснить это можно просто попыткой его запуска, то можно воспользоваться программой fetch. Ее назначение - скачивать из интернет файлы, что и позволит нам использовать ее для запуска скрипта. Допустим, вам нужно запускать скрипт http://www.example.com/path/to/script.php Для этого нужна команда fetch -o - http://www.example.com/path/to/script.php Соответственно для запуска ее каждые полчаса в crontab нужна такая строка:
*/30 * * * * /usr/bin/fetch -o - http://www.example.com/path/to/script.php
В этом случае скачанная информация (результат работы скрипта) уйдет вам по email. Если это нежелательно, то воспользуйтесь следующим примером:
*/30 * * * * /usr/bin/fetch -o /dev/null http://www.example.com/path/to/script.php
Коротко:
Просмотр :
crontab -l
изменение :
crontab -e
или можно использовать
EDITOR=ee crontab -e
если редактор vi вам сложен.
SSH
Для редактирования и установки crontab необходимо подключение к серверу по протоколу ssh версии 2.
Для Windows подойдет SSH-клиент PuTTY, распространяющийся бесплатно. Вы найдете его здесь.
PuTTY не требует установки и им можно пользоваться сразу после скачивания.

