Как запустить cronjob каждые X минут?

Я запускаю PHP-скрипт в cronjob, и я хочу отправлять электронные письма каждые 5 минут

Мой текущий (crontab) cronjob:

10 * * * * /usr/bin/php /mydomain.in/cromail.php > /dev/null 2>&1 

Cronmail.php выглядит следующим образом:

 <?php $from = 'D'; // sender $subject = 'S'; $message = 'M'; $message = wordwrap($message, 70); mail("myemail@gmail.com", $subject, $message, "From: $from\n"); ?> 

Но я не получил электронное письмо через 30 минут с этой конфигурацией.

В файле crontab поля:

  • минута часа.
  • час дня.
  • день месяца.
  • месяц в году.
  • день недели.

Так:

 10 * * * * blah 

означает выполнение blah через 10 минут каждый час.

Если вы хотите каждые пять минут, используйте либо:

 */5 * * * * blah 

что означает каждую минуту, но только каждый пятый, или:

 0,5,10,15,20,25,30,35,40,45,50,55 * * * * blah 

для старых исполняемых файлов cron которые не понимают нотацию */x .

Если после этого все еще не работает, измените команду на что-то вроде:

 date >>/tmp/debug_cron_pax.txt 

и следить за тем файлом, чтобы что-то было написано каждые пять минут. Если это так, что-то не так с вашими PHP-скриптами. Если нет, что-то не так с вашим демоном cron .

Ваш CRON должен выглядеть так:

*/5 * * * *

CronWTF действительно полезен , когда вам нужно проверить свои настройки CRON.

Может быть хорошей идеей, чтобы вывести вывод в файл журнала, чтобы вы могли видеть, что ваш скрипт тоже набрасывает какие-либо ошибки, так как вы не увидите их в своем терминале.

Также попробуйте использовать shebang в верхней части вашего PHP-файла, поэтому система знает, где найти PHP. Такие как:

#!/usr/bin/php

таким образом вы можете назвать все это так

*/5 * * * * php /path/to/script.php > /path/to/logfile.log

Вы устанавливаете свой cron для запуска на 10-й минуте в каждый час.
Чтобы установить его every 5 mins измените на */5 * * * * /usr/bin/php /mydomain.in/cronmail.php > /dev/null 2>&1

2 шага, чтобы проверить, работает ли cronjob:

  1. Войдите на сервер с пользователем, выполняющим cronjob
  2. Вручную запустить команду php:

    / usr / bin / php /mydomain.in/cromail.php

И проверьте, отображается ли какая-либо ошибка.