Синтаксис для записи в crontab выглядит правильно. Действительно, если вы отредактируете свой crontab, используя « crontab -e
» (как и должно быть), вы получите ошибку, если в любом случае укажете синтаксически неверную запись в crontab.
Во-первых, /path_to_my_php_script/info.php
правильно ли работает из командной строки?
Если так, это также работает правильно, как это ?:
/bin/sh -c "(export PATH=/usr/bin:/bin; /path_to_my_php_script/info.php </dev/null)"
Если это работает, это работает так?
/bin/sh -c "(export PATH=/usr/bin:/bin; /path_to_my_php_script/info.php </dev/null >/dev/null 2>&1)"
Шаг (3) аналогичен тому, как cron будет запускать вашу программу (как описано в «man 5 cron»).
Наиболее вероятная проблема, с которой вы сталкиваетесь, заключается в том, что cron PATH использует для запуска вашей программы слишком строгие ограничения. Поэтому вы можете добавить что-то вроде следующего в начало вашей записи crontab (вам нужно будет добавить в любые каталоги, которые понадобятся вашему скрипту):
PATH=~/bin:/usr/bin/:/bin
Также обратите внимание, что по умолчанию будет использоваться cron /bin/sh
, а не bash. Если вам нужен bash, также добавьте это в начало вашего файла crontab:
SHELL=/bin/bash
Обратите внимание, что оба эти изменения затронут все записи в crontab. Если вы просто хотите изменить эти значения для вашей info.php
программы, вы можете сделать что-то вроде этого:
*/2 * * * * /bin/bash -c ". ~/.bashrc; /path_to_my_php_script/info.php"
Также стоит упомянуть, что в системе, настроенной на «почту» (другими словами, в системе, в которой настроен MTA [sendmail / postfix / etc]), весь вывод из программ crontab отправляется вам по электронной почте автоматически. В стандартной настольной системе Ubuntu локальная почта не будет настроена, но если вы работаете на сервере, вы можете просто набрать «mail» в терминале, чтобы увидеть все эти cron-сообщения. Это также относится к команде " at
".