我正在开发一个ksh性能脚本。它需要以下选项: - 我(间隔时间) - p(每个间隔的消息) - t(总消息)
例如:“script -i 1 -p 2 -t 10”表示每秒2条消息,最多10条消息。
这是有效的,但脚本在给定的间隔时间内还没有平均分布消息。在此示例中,脚本应在0.5秒之后执行第二个命令,而不是之前。
是否可以轻松完成此操作?
简而言之,这就是我到目前为止所做的:
typeset -i i=0
typeset -i n=0
while [ $i -lt $TOTAAL ]; do
while [ $n -lt $PERINT ]; do
# execute this command
n=$((n+1))
done
i=`expr $i + $PERINT`
# Reset n
n=0
# Wait interval time
sleep $INTERVAL
done
-i:$ INTERVAL是一个整数(0,1,2 ......),不以任何方式计算。我已经完成了输入检查,以防止脚本不期望输入。
-t:$ TOTAAL
-p:$ PERINT
答案 0 :(得分:1)
根据serverfault question 340838 Aix 5.3在/ usr / bin / ksh93中附带单独的ksh93二进制文件。
这将具有亚秒sleep
和浮点运算。在计算间隔时,请注意fence-post错误。
答案 1 :(得分:0)
感谢Henk Langeveld,我发现ksh93已经预先安装好了。这是新脚本。它似乎工作正常。
typeset -i i=0
typeset -i n=0
while [ $i -lt $TOTAAL ]; do
while [ $n -lt $PERINT ]; do
# execute this command
sleep $VERDELING
n=$((n+1))
done
i=$((i+PERINT))
# Reset n
n=0
done
这些是我使用的一些检查。我翻译了错误消息。
if [[ $PERINT -gt $TOTAAL ]]; then
echo "[[31mFOUT[0m] Messages per interval cannot be greater then total amount"; exit
fi
VERGELIJK=`echo "scale=1; $TOTAAL / $PERINT" | bc`
if [[ $VERGELIJK = *.[1-9]* ]]; then
echo "[[31mFOUT[0m] Messages per interval has to be a multiple of the total amount"; exit
fi
VERDELING=`echo "scale=2; $INTERVAL / $PERINT" | bc`