【发布时间】:2019-10-05 21:43:30
【问题描述】:
我正在尝试监视一个日志文件,然后显示特定请求调用的计数,输出将显示标题行,其中包含每个请求的名称“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 节点2 1849 2183 41387 0
#节点 3 5339 8534 40838 0
#节点 4 1829 2196 46503 0
#预期输出:数字每 1 秒刷新一次时,应显示与上述相同
【问题讨论】:
-
我的东西 ncurse 会很好地完成这项工作。
标签: bash refresh file-monitoring