Применить лучшие фильтры в пакетном режиме

Применить лучшие фильтры в пакетном режиме

Я могу применить нужные мне фильтры в интерактивном режиме (нажав o). Есть ли способ получить их в пакетном режиме.

Я использую procps-ng версии 3.3.10. Спасибо.

решение1

В соответствии сстраница руководства, -pпараметр командной строки может использоваться для ограничения того, какие процессы topчитают. Похоже, он не позволяет фильтровать точно так же, как в интерактивном режиме, но вы можете достичь по сути того же результата, изучив вывод ps.

Пример, берущий только процессы с более чем тремя потоками:

$ ps -eLf | awk '$6 ~ /^[0-9]+$/ { if ($6 > 3) { print $2; } }' | sort -u

На моем компьютере эта команда выводит список всех соответствующих процессов, по одному в каждой строке. psгенерирует список сведений о процессе, awkкоманда фильтрует их и sortпросто удаляет дубликаты.

Для вашего использования проверьте, какие столбцы psвам понадобятся. На моем компьютере число потоков («NLWP») — это шестой столбец ( $6), а идентификатор процесса («PID») — второй столбец ( $2). Измените их в awkкоманде по мере необходимости, чтобы они соответствовали нужному вам фильтру. Обратите внимание, что $6появляется дважды: первый раз, чтобы убедиться, что это число, а не заголовок, и второй раз, чтобы убедиться, что оно больше 3.

После запуска этой команды идентификаторы процессов должны быть переданы top. Bash и, вероятно, другие оболочки позволяют передавать вывод программы в качестве аргументов другой программе, поэтому конечная команда может быть

$ top $(ps -eLf | awk '$6 ~ /^[0-9]+$/ { if ($6 > 3) { print "-p"$2; } }' | sort -u) ... And other options

"-p"добавлено для того, чтобы вывод работал с top. При необходимости настройте эту команду в соответствии с вашим фильтром и оболочкой, вставьте ее в пакет, и она должна работать.

Примечание: добавление большего количества фильтров, вероятно, потребует изучения awk. Это не слишком сложно.

Связанный контент