我正在尝试监视一个日志文件,然后显示特定请求调用的计数,输出将显示标题行,其中包含每个请求的名称“PUT GET HEAD”,并且低于每行每个节点的请求计数。我需要刷新显示每 1 秒计数的变量的输出
下面代码的问题,脚本不断删除前几行并上升到屏幕顶部,而输出应该是固定的,只有请求的数量应该刷新
#!/usr/bin/bash
#variables
MYIP=$(ifconfig eth1|grep -w 'inet'| awk '{print $2}')
BASEIP=$(echo $XIP | cut -d"." -f-3)
MONPUT=$(cat $HTTPLOG | grep -w "PUT" |awk '{print $9}'| grep -E "20"| wc -l)
MONHEAD=$(cat $HTTPLOG | grep -w "HEAD" | awk '{print $9}'| grep -E "20" |wc -l)
MONGET=$(cat $HTTPLOG | grep -w "GET" | awk '{print $9}'| grep -E "20" |wc -l)
MONDEL=$(cat $HTTPLOG | grep -w "DELETE" | awk '{print $9}'| grep -E "20" |wc -l)
# header
printf "%15s" "Node " |tr '\n' '\t'
printf "%15s" 'PUT' | tr '\n' '\t'
printf "%15s" 'HEAD' | tr '\n' '\t'
printf "%15s" 'GET' | tr '\n' '\t'
printf "%15s" 'DELETE' | tr '\n' ' '
# starting the loop
while [[ true ]]
do
i=(1)
for (( x=1; x<=3; x++))
do
((i = i + 1))
NODEIP="$BASEIP.$i"
ssh $NODEIP printf "%15s" "$GETNAME" "$MONPUT" "$MONHEAD" "$MONGET" "$MONDEL"
done
echo -ne "\033[3A\r"
done
这是预期的输出:
节点 PUT - HEAD - GET - DELETE node-2 1849 2183 41387 0
#节点 3 5339 8534 40838 0
#节点 4 1829 2196 46503 0
#预期输出:每 1 秒刷新一次数字时应显示与上面相同