Linux Bash 休眠无限循环
Linux Bash infinite loop with sleep
我是运行一个Bash脚本来执行一个PHP文件。
while true
do
date1=$(date +%s%N | cut -b1-13)
php /var/www/html/sprint/yii hello/validate
wait
date2=$(date +%s%N | cut -b1-13)
diff=$(($date2-$date1))
echo "$diff ms"
done
diff 以毫秒为单位返回执行时间。
我现在如何确保脚本休眠
1200 - diff ms
确保 PHP 脚本每小时最多调用 3000 次?
首先,您需要一个睡眠,就像 GNU coreutils 中的睡眠一样,它可以理解小数秒。如果你的是,那么:
sleep $(echo "1.2 - $diff/1000" | bc -l)
或者,您的循环可以简化为:
while true
do
date1=$(date +%s%N)
php /var/www/html/sprint/yii hello/validate
wait
date2=$(date +%s%N)
sleep $(echo "1.2 - ($date2-$date1)/1000000000" | bc -l)
done
另一方面,如果我们想保留经过时间的打印输出:
while true
do
date1=$(date +%s%N)
php /var/www/html/sprint/yii hello/validate
wait
diff=$(echo "($(date +%s%N) - $date1)/1000000" | bc -l)
echo "That took $diff milliseconds."
time sleep $(echo "1.2 - ($diff)/1000" | bc -l)
done
我是运行一个Bash脚本来执行一个PHP文件。
while true
do
date1=$(date +%s%N | cut -b1-13)
php /var/www/html/sprint/yii hello/validate
wait
date2=$(date +%s%N | cut -b1-13)
diff=$(($date2-$date1))
echo "$diff ms"
done
diff 以毫秒为单位返回执行时间。
我现在如何确保脚本休眠
1200 - diff ms
确保 PHP 脚本每小时最多调用 3000 次?
首先,您需要一个睡眠,就像 GNU coreutils 中的睡眠一样,它可以理解小数秒。如果你的是,那么:
sleep $(echo "1.2 - $diff/1000" | bc -l)
或者,您的循环可以简化为:
while true
do
date1=$(date +%s%N)
php /var/www/html/sprint/yii hello/validate
wait
date2=$(date +%s%N)
sleep $(echo "1.2 - ($date2-$date1)/1000000000" | bc -l)
done
另一方面,如果我们想保留经过时间的打印输出:
while true
do
date1=$(date +%s%N)
php /var/www/html/sprint/yii hello/validate
wait
diff=$(echo "($(date +%s%N) - $date1)/1000000" | bc -l)
echo "That took $diff milliseconds."
time sleep $(echo "1.2 - ($diff)/1000" | bc -l)
done