Мое предположение - то, что Вы входите в систему один из форматов "Текстового файла". Они не могут использоваться, если Вы хотите, чтобы динамическое действие (новые процессы, и т.д.) было получено.
Вместо этого используйте формат "Двоичного файла" для собирания данных. Это позволит perfmon получать любое динамическое действие для счетчиков, которые Вы присваиваете.
Однажды Вы набор завершается, если Вы хотите открыть журнал в Excel/и т.д., можно использовать relog.exe
программа (включенный с Windows...) для преобразования двоичного файла в текстовый файл. Синтаксис:
relog.exe logfile.blg -f csv -o logfile.csv
pv
работает с конвейерами (не командами ) - это измеритель объема, показывающий, сколько данных прошло за заданную точку конвейера.
Ваша команда grep не конвейер ( |
- оператора канала
нигде не найти) - это всего лишь одна команда, выполняющая свое дело. pv
здесь не поможет, вам просто нужно поверить, что grep
действительно выполняет свою работу со всеми входными файлами.
Вы могли бы сколотите что-нибудь вместе с find, pv, xargs & grep ( find. -name "* .rb" | pv | xargs grep [regex]
похоже, это может быть многообещающим, но вам придется сказать ] pv
насколько велик результат find
, чтобы он давал значимые результаты.
Откровенно говоря, кажется, что работы больше, чем стоит. Просто запустите команду grep, терпеливо ждите , и обработайте результат, когда он будет готов.
Еще два метода:
for file in *.rb; do echo $file; grep "string" $file >> output.txt; done
Или в другой оболочке во время работы исходной команды найдите pid команды grep, а затем:
strace -q -s 256 -e trace=open -p [pid] 2>&1 | head
Оба приведенных выше метода покажут вам над каким файлом в данный момент работает команда grep. Вы можете найти общее количество файлов с помощью:
ls -l *.rb | wc -l
Наконец, используйте это, чтобы выяснить, какой номер текущего файла находится в списке:
ls -l *.rb | grep -n [the current filename]
PS Мои ответы предполагают, что все ваши файлы находятся в одном каталоге. Если это не так, вам придется использовать find
вместо ls
и * .rb
, как предлагается тоньше.
Я не уверен, какую ОС вы используете, но grep -R "string" * .ext
может работать у вас неправильно.
Вы было бы лучше использовать find
в сочетании с grep
:
find. -type f -name "* .rb" -print0 | xargs --null grep "string"
Вы уже пробовали
grep -R "string" *.rb | pv
Я не знаю, работает ли это на самом деле, потому что он не знает, сколько бит общих данных нужно искать, потому что он рекурсивный?
В последних версиях pv
есть "- d"
-опция для наблюдения за всеми FD другого процесса.
Так что в Теория pv
будет работать не только как труба, но и как индикатор прогресса для всего процесса. (Например, попробуйте это с PID вашего Firefox)
Для проблемы, описанной выше, более простая идея заключается в следующем:
Пока grep
работает, используйте lsof
вместе с watch
.
$ watch -n 1 "lsof | grep -n $PWD"
Таким образом вы можете отслеживать ход выполнения grep.
Я обычно использую файловую систему proc в системах Linux, то есть
ls -al / proc /
Здесь перечислены все файлы, которые команда grep- вызов открыт в настоящее время и, таким образом, дает представление о том, где в поиске он находится в настоящее время.