Сохранять счет из файла журнала

У меня есть файл с именем output.log который имеет этот контент:

 Thread started Thread finished Thread started Thread finished Thread started Thread started 

Я контролирую его вывод, используя:

 tail -f output.log 

Я бы хотел написать команду, чтобы подсчитывать, сколько потоков работает прямо сейчас. В приведенном выше случае выход будет выглядеть следующим образом:

 2 threads are running 

Должен ли я, возможно, использовать grep и каким-то образом поддерживать подсчет строк?

3 Solutions collect form web for “Сохранять счет из файла журнала”

Вы можете использовать awk для подсчета. Хотя, если ничего более сложного, вы можете использовать

 tail -f output.log | awk '/Thread started/{n++}/Thread finished/{n--} END { printf ("%d Threads are running\n", n)}' output.log 

Еще лучше, используйте следующие watch :

 watch -n.2 -x awk '/Thread started/{n++}/Thread finished/{n--} END { printf ("%d Threads are running\n", n)}' output.log 

В -n.2 будут обновляться каждые 0.2s которые появятся в верхней части экрана.

Вы можете попробовать следующий сценарий bash :

 #!/bin/bash start_count=$(grep -c "started" /path/to/output.log) finish_count=$(grep -c "finished" /path/to/output.log) echo "$((start_count - finish_count)) threads are running" 

Это рассматривает любые ранее запущенные потоки, выходящие за пределы области печати tail -f . Здесь мы подсчитали появления «start» и «finished» в файле, а затем просто вычтем значения, чтобы получить результат. Если вы хотите, чтобы вы выбирали любой диапазон строк (например, tail -30 /path/to/output.log ), чтобы читать, а не весь файл, а затем находить результат с учетом этих строк.

Попробуйте запустить этот скрипт,

 a=$(grep started output.log | wc -l) b=$(grep finished output.log | wc -l) echo Total Running threads: "$[$a-$b]" 

Создайте скрипт bash и вставьте в него указанные выше строки. Вы получите текущие потоки.

  • Можно ли «перевернуть» символическую ссылку на новый файл, не затрагивая никаких открытых дескрипторов файлов?
  • Мониторинг файла журнала и выполнение различных команд в зависимости от разных условий
  • Временно заморозить процесс при взаимодействии оболочки
  • Окрашивание хвостового выхода с помощью perl
  • Как я могу напечатать вторую в последнюю строку множество файлов в один файл?
  • Как изменить цвет символа при хвосте и tr
  • Редактирование текстового файла с Vim не обновляет tail -f
  • Время, необходимое для вывода трубы на голову / хвост
  • Добавьте возврат каретки к выходу `tail` при использовании` grep`
  • Греп с пробелами внезапно не работает
  • Как ограничить количество строк выходом команды в bash?
  • Interesting Posts

    Как найти строку в файлеA, выбрать текст из этой строки и заменить строку на fileB?

    Разделить текстовый файл в случайных половинах по категории

    Ошибка при перенаправлении портов с помощью iptables: нет цепочки / цели / соответствия этим именем

    RHEL 6: отказ от зависимостей для обновления qgis rpm

    Найдите процесс, который использует максимальное использование ЦП, если использование ЦП составляет более 60%?

    Одиночные тире `-` для односимвольных опций, но двойные дефисы` –` для слов?

    Где технически хранятся данные ACL?

    Как удалить недействительный osd в кластере ceph?

    Bash: слияние имени папки из переменной с именем файла

    как генерировать только один специальный символ в этом генераторе паролей

    Выход из поиска '& pattern' менее

    Перенаправление портов по шлейфу с IP-адресом, кроме 127.0.0.1

    Можно приостановить dd, поменять место назначения на более крупный диск и продолжить?

    Найти последнее время выключения

    Какие драйверы шины следует включать при компиляции ядра FreeBSD?

    Linux и Unix - лучшая ОС в мире.