使用Shell脚本每5秒运行一次PHP文件
我想使用Shell脚本每隔5秒运行一个php文件。但有时脚本每秒运行一次,有时停止运行。我也需要使用crontab吗?请帮忙使用Shell脚本每5秒运行一次PHP文件,php,shell,sh,Php,Shell,Sh,我想使用Shell脚本每隔5秒运行一个php文件。但有时脚本每秒运行一次,有时停止运行。我也需要使用crontab吗?请帮忙 #!/bin/bash while true; do begin=`date +%s` php /home/user/www/run.php end=`date +%s` if [ $(($end - $begin)) -lt 5 ]; then sleep $(($begin + 5 - $end)) fi don
#!/bin/bash
while true; do
begin=`date +%s`
php /home/user/www/run.php
end=`date +%s`
if [ $(($end - $begin)) -lt 5 ]; then
sleep $(($begin + 5 - $end))
fi
done
最好的办法是配置crontab以保持执行或另一个程序作为服务安装 contrab的问题是,最低执行时间是每1分钟。因此,您应该创建一个脚本,该脚本每5秒执行一次,但不超过12次。(12 x 5秒=60秒) 终止进程并使用crontab重新运行它 例子
sript.sh
#/bin/bash
#不要运行12次,因为这将与下一个crontab执行的时间相同
我在123456789911
做
php/home/user/www/run.php
睡眠5
完成
在crontab上
***/path/to/script.sh
最好是配置crontab以保持执行或另一个程序作为服务安装
contrab的问题是,最低执行时间是每1分钟。因此,您应该创建一个脚本,该脚本每5秒执行一次,但不超过12次。(12 x 5秒=60秒)
终止进程并使用crontab重新运行它
例子
sript.sh
#/bin/bash
#不要运行12次,因为这将与下一个crontab执行的时间相同
我在123456789911
做
php/home/user/www/run.php
睡眠5
完成
在crontab上
***/path/to/script.sh
试试这个:
#/bin/bash
虽然真实;做
睡眠5&
php/home/user/www/run.php&
等待
完成
wait
(不带参数)等待所有后台作业完成,因此循环将阻塞,直到较长的睡眠和php进程完成
展示
rand(){echo$((随机%$1));}
对于{1..10}中的i;做
开始=$s
r=$(兰特10)
echo“迭代$i,休眠$r秒”
睡眠$r
结束=$秒
如果((结束-开始<5));然后
n=$((5-(结束-开始)))
echo“睡眠$n秒”
睡眠$n
fi
完成
#或者更简单地分配给秒
对于{1..10}中的i;做
秒=0
r=$(兰特10)
echo“迭代$i,休眠$r秒”
睡眠$r
持续时间=$s
如果((持续时间<5));然后
n=$((5-持续时间))
echo“睡眠$n秒”
睡眠$n
fi
完成
当然比使用等待更复杂
尝试以下方法:
#/bin/bash
虽然真实;做
睡眠5&
php/home/user/www/run.php&
等待
完成
wait
(不带参数)等待所有后台作业完成,因此循环将阻塞,直到较长的睡眠和php进程完成
展示
rand(){echo$((随机%$1));}
对于{1..10}中的i;做
开始=$s
r=$(兰特10)
echo“迭代$i,休眠$r秒”
睡眠$r
结束=$秒
如果((结束-开始<5));然后
n=$((5-(结束-开始)))
echo“睡眠$n秒”
睡眠$n
fi
完成
#或者更简单地分配给秒
对于{1..10}中的i;做
秒=0
r=$(兰特10)
echo“迭代$i,休眠$r秒”
睡眠$r
持续时间=$s
如果((持续时间<5));然后
n=$((5-持续时间))
echo“睡眠$n秒”
睡眠$n
fi
完成
当然比使用
wait
更复杂,在我的理解中,linux cron可以在几分钟、几小时、几天、几个月内运行,但是不能在几秒钟内运行。您应该使用shell脚本和nohup
在后台运行它据我所知,linux cron可以在几分钟、几小时、几天、几个月内运行,但不能在几秒钟内运行。您应该使用shell脚本和nohup
在后台运行它,您能给我一个例子吗?您能给我一个例子吗?另外,在bash中,使用内置的$SECONDS
变量,而不是调用date
,此时您需要做的就是跟踪持续时间。您能显示吗?另外,在bash中,使用内置的$SECONDS
变量,而不是调用date
,此时您需要做的就是跟踪持续时间。您能显示这一点吗?