При создании сайтов появляется множество задач, требующих регулярного исполнения или однократного выполнения в заданное время. Это может быть и синхронизация времени, и архивирование данных, индексация файлов, отсылка или создание различных отчетов — что угодно. Вдобавок к этому, бывают задачи, требующие однократного исполнения по расписанию. К примеру, публикация какой-либо новости. Самый популярный сервис, который обеспечивает все нужные возможности по автоматическому запуску программ — это Cron. большинство провайдеров на серьезных тарифных планах предлагают его использование своим клиентам.
Cron*‘ом называют демон, выполняющий запланированные задачи. То, что в различных Unix-системах (FreeBSD, разные версии Linux) называется Cron’ом, пользователи Windows привыкли называть sheduler’ом (назначенные задания). Если доступ к Cron’у вам предлагает хостер (на тарифных планах виртуального хостинга), то подробности того, как настраивать выполнение различных задач, вы можете узнать в соответствующем разделе справки. Как правило, вы можете выбрать для запуска определенные приложения, задать их параметры, периодичность (или срок выполнения, в том случае если вам надо выполнить задачу однократно) и все — в назначенный срок все должно будет сработать. В том случае если хостинг-провайдер обеспечивает вам возможность правки расписаний (crontab*) через SSH, это может быть более удобным, чем использование предоставляемого веб-интерфейса в административном разделе управления сайтом. Если ваш тарифный план допускает использование SSH*, вы можете, используя SSH-клиент (одним из лучших является WinSCP2), править crontab’ы на сервере провайдера так, как если бы вы их редактировали на своем компьютере через обычный shell.
Круг задач, который может (и должен, у хорошего вебмастера) выполнять Cron, весьма широк:
индексация. При использовании поиска на сайте периодически необходимо проводить подсчет индекса. Ничего лучше, чем Cron, для этих целей придумать невозможно.
Синхронизация времени. Опять же — рутинная задача, легко выполняемая Cron’ом в автоматическом режиме. Функция эта необходима для самых различных серверов. Дело в том, что точное время необходимо при использовании различных биллинговых систем — зачастую стоимость различных услуг (телефонные разговоры, доступ в интернет) зависит от времени суток. Неточно выставленное время на биллинговом сервере может стать источником многочисленных жалоб клиентов.
Выполнение различных отложенных действий: публикация материалов, рассылка.
Как все это работает? Работает Cron просто — это предустановленный сервис, беспокоиться об его установке не нужно. Крайне редки случаи, когда он или не установлен или вместо Cron’a используется какая-либо другая программа. Даже в версиях Linux, предназначенных для домашнего пользователя, Cron присутствует. Причем не только для того, чтобы пользователь мог расписать выполнение каких-то нужных ему событий, но и для выполнения различных системных задач — к примеру, дефрагментации жесткого диска.
Непосредственная работа выглядит так: Cron запускается из /etc/rc или /etc/rc.local. После запуска он обращается к /var/spool/cron, где считывает так называемый crontab-файл, с тем же названием, что и ваш логин, указанный в /etc/passwd. Также Cron ищет файлы в каталогах /etc/crontab и /etc/cron.d/. Все найденные crontab’ы загружаются в память. Затем, каждую минуту, Cron проверяет все crontab’ы и выполняет в них те команды, которые должны быть выполнены в данную минуту. Если при выполнении команды она выдала какие-либо данные, они будут отправлены Cron’ом или пользователю, создавшему crontab, или пользователю, чей адрес указан в переменной MAILTO crontab’а.
Естественно, возникает необходимость отслеживать изменения в списке заданий, поэтому, также раз в минуту, Cron проверяет дату и время последних изменений в каталога