0

我正在尝试监视一个日志文件,然后显示特定请求调用的计数,输出将显示标题行,其中包含每个请求的名称“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 秒刷新一次数字时应显示与上面相同

4

1 回答 1

0

我同意 UtLox 的观点,一般来说,ncurses这是您的最佳选择。考虑到这一点,请看一下bashsimplecurses

Git 仓库

教程

基本示例

于 2019-05-20T01:34:30.063 回答