【发布时间】:2015-01-09 13:27:25
【问题描述】:
Bash 脚本:
$ cat test.sh
#!/bin/bash
while true
do
/home/user/public_html/website.com/test.php
sleep 5
done
我试图用 cron 调用它:
* * * * * /home/user/public_html/website.com/test.sh
我的错误在哪里? .sh 的位置是否重要?
编辑: 我从上面解决了所有问题。我还创建了这个 cron 作业来防止多个进程:
* * * * * flock -n /tmp/test.lock /home/user/public_html/website.com/test.sh
现在的问题是 bash 每 5 秒执行一次 php,这会创建多个进程,例如:
user 12:31 /home/user/public_html/website.com/test.php
user 12:31 /home/user/public_html/website.com/test.php
user 12:31 /home/user/public_html/website.com/test.php
如何控制?我需要更改 bash 脚本,以便它可以检测 PHP 是否正在执行。
这是否正确:
#!/bin/bash
while true
if [ "$(pidof test.php)" ]
then
echo "Running"
else
do
/home/user/public_html/website.com/test.php &
sleep 5
fi
done
【问题讨论】:
-
脚本是否有模式
+x用户cron将执行它? -
我对这个 .sh 脚本一无所知。我只需要在后台每 5 秒执行一次 php 文件。对不起,我不知道 +x 是什么。如果有影响,我会使用共享主机。
-
请澄清您的问题。 “我的错在哪里?”方法 ...? php 是否正在运行?你能测试一个更简单的脚本来确保它可以工作吗,比如
echo > mylogfile.log -
我们只知道至少一个问题:您的脚本在第一分钟每 5 秒运行一个 test.php,但在第二分钟每 5 秒运行两个 test.php,3 在第 3 分钟,... 等等。
-
能否请您检查我在主要问题中的编辑。谢谢!