Есть ли в unix/bash утилита калькулятора тарифов?

Я ищу инструмент, который делает что-то похожее на

tail -f /var/log/some.log | grep EVENT1 |rate

который продолжает отображать скорость события.

2 ответа

Решение
tail -f /var/log/some.log | grep --line-buffered EVENT1 | pv -l > /dev/null

pv это труба монитор, который выводит статистику по stderr; -l будет измерять строки вместо байтов.

Вам нужно будет использовать --line-buffered на ваше grep вызов, чтобы он не буферизовал большие блоки, или для общего случая вы можете использовать stdbuf настроить вашу буферизацию.

Предполагая, что вы имеете в виду события / секунду:

while read line; do echo -n "$(grep -c EVENT1 <<<"$line")"; done | pv >/dev/null

Это использует pv чрезвычайно простая утилита. sudo apt-get install pv в большинстве случаев (или yum -i так далее.)

Выход, когда вход, например, (while true; do echo yes; sleep .1; done):

218B 0:00:22 [9,88B/s] [    <=>       ]

Используемая техника заключается в замене каждой совпадающей строки одним байтом на выходе (а именно '1') и просто измерить пропускную способность в байтах в секунду:)

Другие вопросы по тегам