我有一个简单的bash脚本,它每10分钟调用一次php脚本来执行一些维护。每隔一段时间,这个php脚本会在运行时终止,当发生这种情况时,bash脚本会退出。
我想这样做,即使php脚本动摇,bash脚本也会继续循环。谁能指出我正确的方向?我一直在寻找一段时间,但我似乎无法找到答案,也许我没有使用正确的搜索条件。
#!/bin/sh
set -e
while :
do
/usr/bin/php /path/to/maintenance/script.php
sleep 600
done
答案 0 :(得分:3)
Rjz的评论是正确的,您应该使用cron
。为此,请运行crontab -e
并添加以下行:
*/10 * * * * /usr/bin/php /path/to/maintenance/script.php
如果设置正确,cron
会通过电子邮件向您发送任何输出(包括错误消息)。
答案 1 :(得分:1)
在:
set -e
行设置shell的“exit on error”标志,告诉它如果它运行的程序以非零状态退出,shell也应该退出:
set -e
false
echo if this prints, your shell is not honoring "set -e"
当然,正在测试其状态的程序有例外:
set -e
if prog; then
echo program succeeded
else
echo program failed
fi
echo this will still print
将正常工作(将发生一个或另一个回声,然后最后一个也将发生。)
回到Dim Time,当/bin/sh
是非POSIX并且是用Bournegol编写的时,sh
的某些版本中有一个错误导致||
表达式被破坏:
set -e
false || true
echo if this prints, your shell is OK
(逻辑错误也在内部应用于&&
表达式,但在那里无害,因为false && anything
本身就是假的,这意味着整个表达式无论如何都会失败!)从那以后,我一直都是警惕“-e”。