Unix Cron не выполняется

Я выполняю скрипт оболочки как задание cron каждую минуту так:

* * * * * /bin/bash /var/www/html/stream.sh

Скрипт содержит следующий код:

#!/bin/sh
if ps -ef | grep -v grep | grep get_tweets.php ; then
exit 0
else
nohup php /var/www/html/streaming/db/get_tweets.php > /dev/null &
exit 0
fi

Я также запускаю другой сценарий оболочки в качестве cron, единственное различие между ними заключается в том, что «get_tweets» заменяется на «parse_tweets_keyword», а cron выполняется так:

* * * * * /bin/bash /var/www/html/process-check.sh

Проблема в том, что хотя последний cron работает отлично, первый, похоже, не запускает скрипт успешно, однако, когда я запускаю команду:

nohup php /var/www/html/streaming/db/get_tweets.php > /dev/null &

Сценарий работает отлично, поэтому я не совсем уверен, в чем проблема. Разрешения для всех файлов правильные и исполняемые, и я запускаю cron-файлы как root под crontab, и оба сценария PHP, которые я пытаюсь выполнить, выполняются как фоновые процессы.

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

-1

Решение

Так что, похоже, это был ответ на мой вопрос:

#!/bin/sh
cd /var/www/html/streaming/db

if ps ax | grep -v grep | grep get_tweets.php ;
then
exit 0
else
nohup php ./get_tweets.php > /dev/null &
exit 0
fi

Может показаться, что он работает даже в том случае, если root get_tweets.php не будет выполнен без предварительного изменения каталога до фактического запуска команды. По второй строке:

cd /var/www/html/streaming/db

Хотя я не совсем уверен, почему он не запустится, так как parse_tweets_keyword.php отлично работал, используя первый скрипт bash, опубликованный в моем вопросе.

0

Другие решения

Других решений пока нет …