Я пытаюсь отследить файл журнала, а затем отобразить количество вызовов конкретных запросов, в выходных данных будет показана строка заголовка, в которой указаны имена каждого запроса «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 сек