-1
我执行一个shell脚本作为cron作业的每一分钟就像这样:克朗的Unix不予执行
* * * * * /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
我也运行的另一个shell脚本作为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 &
脚本运行完美,所以我不完全确定问题是什么。所有文件的权限是正确和可执行的,我在crontab下以root身份运行crons,并且我试图执行的两个PHP脚本都作为后台进程运行。
如果有人能帮助或知道这个问题,将不胜感激。我也愿意以更好的方式运行PHP脚本,或许作为crontab中的一行,而不是运行shell脚本来通过cron运行PHP脚本。
它们是由同一用户运行吗?如果没有,具有'get_tweets.php'的用户的路径上有php吗? – prodigitalson 2014-10-10 21:00:15
Yikes ...避免'grep -v grep',并使用像'ps axc | grep ...' – 2014-10-10 21:00:39
两者都以超级用户身份运行,尽管我尝试以不同的用户身份运行并出现相同的问题。 ps axc实际上并不实际显示PHP脚本名称本身? – 2014-10-10 21:12:18