Мне нужна помощь в правильной работе cronjob в Linux (Debian). (Это мой первый).
Мне нужно, чтобы файл "запускался" один раз в час заданное количество раз. Я зашел так далеко:
нет crontab для root - используется пустой
отредактированный файл crontab: 0 2-21 * * * /www/file.php
crontab: установка нового crontab
Это было сделано для того, чтобы cronjob запускался в 2 часа ночи (или 200 часов) и запускался каждый час до 21:00. Я проверил базу данных, чтобы убедиться, что файл сделал свое дело в 2:10, и ничего не изменилось, поэтому он явно не запускался.
Я новичок в Linux, поэтому, вероятно, есть способ увидеть, что произошло, но мне действительно интересно, правильно ли я написал инструкцию Cronjob, прежде чем приступить к диагностике.
В соответствии с этим:
42 3-22 * * * /var/www/apache2-default/getUserDetails.php?friend=14522828
Вы не можете поставить ?
там. Он рассмотрит ?
вместе с остальными после него как часть имени файла из файловой системы (он ищет файл getUserDetails.php?friend=14522828
в /var/www/apache2-default
). Что вы можете сделать:
42 3-22 * * * /usr/bin/php-cgi /var/www/apache2-default/getUserDetails.php friend=14522828
(при условии, что исполняемый файл php-cgi находится в / usr / bin, измените соответствующим образом, если php установлен в другом месте)
В качестве альтернативы вы можете отредактировать getUserDetails.php так, чтобы в самом верху файла была следующая строка:
#!/usr/bin/php-cgi
<?php
[your code goes here]
...
Затем убедитесь, что getUserDetails.php запускается от root (проверьте через ls -l, назначьте через chmod), а затем укажите следующее расписание в cron:
42 3-22 * * * /var/www/apache2-default/getUserDetails.php friend=14522828
После этого вы можете отслеживать / var / log / cron для команд, выполняемых crond. И тогда вы можете проверить почту root (mail
command) для вывода программы или обнаруженных ошибок.
если, с другой стороны, то, что у вас действительно было в вашем crontab, было
0 2-21 * * * /www/file.php
Тогда я оступился. Запись действительно выглядит нормально, поэтому вам нужно убедиться, что вы можете запустить файл вручную в командной строке (введите /www/file.php
в оболочке). Добавьте для него биты выполнения, если он не исполняемый.
После этого проверьте / var / log / cron, а также почту root на наличие как выполняемых команд, так и ошибок.
Ваш crontab мне кажется совершенно нормальным.
Вы уверены, что у вас установлены соответствующие биты выполнения и правильная Shebang чтобы корень мог выполнить файл /www/file.php?