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

У меня есть файл с именем 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 и вставьте в него указанные выше строки. Вы получите текущие потоки.

  • Команда для удаления первого N числа строк на входе
  • Проводя результат ls в хвост
  • Подавлять сообщения об усечении файла при использовании хвоста
  • Только кошка из определенной строки X (с рисунком) в другую определенную строку Y (с рисунком)
  • Перенаправить выход хвоста в файл, а затем остановить, когда найдено совпадение
  • разделение CSV и сохранение заголовка без промежуточных файлов
  • Данные о трубах от подключения сокета TCP к терминалу
  • Хвост нескольких файлов и вывод в качестве дополнительного столбца с результатами поиска
  • Будет ли «хвост -100»? sed -n 1p "читать только одну строку?
  • grep не работает в цикле for по списку
  • Tail Grep - печать окружающих линий до тех пор, пока шаблон не будет сопоставлен
  • Linux и Unix - лучшая ОС в мире.