Было бы здорово, если бы определённые скрипты выполнялись автоматически и докладывали бы вам об этом по электронной почте. К счастью, благодаря демону cron и обслуживающим сценариям…
Многие статьи прочитанные мной на эту тему начинаются примерно с этих слов. Да начало замечательное думаю я, это та статья которая мне нужна, в ней я наконец-то узнаю как правильно давать задания крону. Я уверен что так думаете и вы, читая одну за другой статью и отбрасывая за ненадобностью, в чём же причина?
Всё дело в том что авторы таких статей много говорят о преимуществе crontab, и то как с ним работать из под консоли… стоп в этом то и есть вся загвоздка, я как обычный пользователь не имею доступа к этой самой КОНСОЛИ, а авторы по какой-то непонятной причине даже не упоминают про С панель, мало того я перечитав более 10 статей не нашел конкретного описания того, как крону дать задание по выполнению скрипта на PHP или Perl. Вместо этого авторы таких статей начинают рассказывать про то как найти crontab в списке запущенных процессов (заметьте что для этого опять таки необходимо как минимум иметь доступ к консоли).
Или про то что в ответ на ваш запрос ответит crontab. Это всё конечно хорошо, но какая нам от этого польза??? Никакой! Авторы таких статей вероятно и не подозревают о чём они пишут, зачем нам лишний хлам? Его и так полным полно в Интернете…
Вступление оказалось затянутым, но в нём я хотел указать отличие этой статьи от подобных статей на эту тему, и так начнём.
Сron - это программа которая позволяет вам в определенные вами моменты времени производить те или иные действия. Например, запускать на выполнение какую либо программу или скрипт, большего нам и не нужно. Задание дать крону очень просто, для этого заходите в свою С панель
  |
  |
и собственно добавить задание. Задание можно давать двумя способами, как вам больше нравится, я приведу в пример оба способа.
Способ 1-й. Standard.
Для начала я покажу как это выглядит на скриншоте, а после объясню что к чему, когда вы заходите в раздел добавления перед вами форма с с несколькими полями. Заполнить их можно вот так:
  |
после нажатия на кнопку Save Crontab происходит как вы догадались сохранение задания, после сохранения на этой же странице задание можно удалить, нажав на ссылку Delete под ненужным заданием.
Способ 2-й. Advanced (Unix Style).
Этот способ мне нравится больше. Добавления задания в этом случае выглядит немного по-другому, перед вами уже другая форма, но смысл один и тоже. Заполняется форма вот так:
  |
После сохранения задания страница имеет вот такой вид.
  |
Теперь поговорим подробнее о всём этом безобразии что я вам показал.
Значит, все задания даются в определённом временном интервале. Может немного путано сказал, но думаю, вы поймете, что для того, что бы задание выполнялось необходимо указать время (минуту, час, день недели, месяц) иначе ничего неполучится. Данные для первого способа задаются так :
В поле выбора минута(ы) minute(s) указываете минуту в которую будет запускаться задание, в поле час(ы) hour(s) указываете час (либо часы) в который(е) будет выполняться задание, а так же день(и) day(s), и месяц month(s), в каждом поле можно указать как конкретное время так и интервал.
В строку команда для выполнения (command to run) вы вписываете ваше задание.
Задание задаётся следующим образом.
- Первым делом вы указываете путь к php, у меня на сервере путь такой /usr/bin/php у вас может быть другим, уточните у админов вашего сервера, после пути к php ставите пробел и пишите полный внутренний путь к файлу который должен запускать crontab. Допустим мне необходимо что бы крон запускал файл new_day.php, зная внутренний путь к файлу я пишу следующее
/home/freeman/domains/public_html/cron/new_day.php
в целом картина выглядит следующим образом :
/usr/bin/php /home/freeman/domains/public_html/cron/new_day.php
- Теперь указываете время обработки этого фала.
- И последнее необязательное условие, в поле Please enter an email address where the cron output will be sent. В переводе на русский звучит так: Введите ваше мыло, куда крон будет присылать отчёт. Поле необязательное, но лучше ввести мыло, что бы быть в курсе дела, если что-то пойдёт не так крон сообщит вам об этом в письме, а если письмо пришло пустое значит всё ОК!!! Во втором случае то же самое.
Думаю с этим всё ясно теперь поговорим о том как задать время выполнения.
Минута часа для запуска (0-59)
Час дня запуска (0-23)
День месяца (0-30)
Месяц года (1-12)
День недели (0-6)
Значок * обозначает слово каждый (день, год, месяц, час).
Итак, например строка 1
* * * * command
будет обозначать запуск программы каждый час в одну минуту.
А строка 02 4 * * * command
означает запуск программы каждый день в 4 часа утра в две минуты.
Значения могут быть числом, трехбуквенным названием, а так же диапазоном, например запись «1-5» в поле day будет означать «с понедельника по пятницу». Значения могут отделяться запятыми: «1,15,31» в поле day будет запускать указанную команду 1-го, 15-го и 31-го числа каждого месяца.
Все пять полей времени допускают использование символа звездочка – «*», который обозначает «использовать любое допустимое значение» для этого поля. Например, для того, что бы запускать команду каждый месяц, поставьте «звездочку» в поле month.
Также можно использовать значения вида «*/число». Например «*/2» в поле месяца будет означать «запускать каждый второй месяц».
Вот например можно указать такое задание :
*/5 * * * * /usr/bin/php /home/freeman/domains/public_html/cron/new_day.php
Эта строка читается так: выполнять эту команду каждые пять минут, каждый час каждый день любого месяца.