【发布时间】:2015-03-16 12:44:44
【问题描述】:
我有一个每五分钟运行一次的 bash 脚本。除其他外,它运行 php 脚本读取现有文件,并在最后发送电子邮件。手动运行时,它会完成这项工作。当 cronjob 运行时,它会部分完成任务。下面的代码:
DIR="/somedir/"
php ${DIR}client.php $DIR
cat ${DIR}alert_list.txt | uniq | while read alert;
do
if [ -s ${DIR}alerts/$alert.txt ]; then
# send the email.
echo "Sending email for..."$alert >> ${DIR}email.txt
DETAILFILE="tools/"$alert
DETAILFILEP=${DETAILFILE}".txt"
php ${DIR}email.php $alert
fi
done
echo 'search completed.'
在“cronjob 模式”中,它永远不会到达“do”语句。在手动模式下,它什么都做。
有什么想法吗?
非常感谢!
【问题讨论】:
-
你的意思是“它永远不会到达'do'语句”?它在最初的
php通话中挂起?你怎么知道?我假设您永远不会在 cron 日志中看到search completed或其他什么?如果将set -x添加到脚本中,当 cron 运行时会得到什么?php是否在默认的$PATH位置,以便 cron 可以找到它?你看过crontab wiki 上的调试建议吗?