Назад | Перейти на главную страницу

Как написать это простое задание cron в Linux (Debian)?

Мне нужна помощь в правильной работе cronjob в Linux (Debian). (Это мой первый).

Мне нужно, чтобы файл "запускался" один раз в час заданное количество раз. Я зашел так далеко:

crontab -e

нет 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?