Синтаксис для записи 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 для запуска вашей программы, слишком ограничен. Поэтому вы можете добавить что-то вроде следующего в начало вашей записи crontab (вам нужно будет добавить в любые каталоги, которые понадобятся вашему скрипту):
PATH=~/bin:/usr/bin/:/bin
Также обратите внимание, что cron по умолчанию будет использовать /bin/sh
, а не баш. Если вам нужен 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 по умолчанию не настроена локальная почта, но если вы работаете на сервере, вы можете просто ввести "почта" в терминале, чтобы просмотреть все эти cron-письма. Это также относится к "at
" командуй.