как отслеживать процессы с помощью имени регулярного выражения?

как отслеживать процессы с помощью имени регулярного выражения?

Я отслеживаю несколько процессов с помощью ie '#top -p 22055,21995' Но многие из них начинаются с fwk* ie fwk3_dev, fwk5_dev

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                        
22055 admin      0 -20  832m 302m  41m S   20  2.5  14973:53 fwk3_dev                                                                                       
21995 admin      0 -20  834m 304m  41m S   14  2.6  10179:55 fwk5_dev 

Как я могу отслеживать с помощью регулярного выражения имя процесса fwk*? Я имею в виду все процессы, начинающиеся с «fwk»?

решение1

topсамо по себе это не сделает, но вы можете написать простой скрипт оболочки, который будет работать topв пакетном режиме ( -bопция), фильтруячтоиспользуя grep, и в цикле. Это не будет интерактивным.

Например

while :; do clear; top -b -n 1 |grep ' fwk' ;sleep 1; done

grepраспознает регулярные выражения, если есть такая -Eвозможность. Но ваш пример можно обработать, просто добавив пробел и "fwk" (если только у вас нет пользователя с таким же именем).

Некоторые версииtopможет потребоваться другой параметр (например, -d) для запуска только один раз в пакетном режиме.

решение2

# first generate a comma-separated list of matching PIDs
pids=$(ps a -o pid,args | awk '/[f]wk/ {print $1}' | xargs | sed -e 's/ /,/g')
# then run top with that list
top -p $pids

ПРИМЕЧАНИЕ: если какие-либо fwk*процессы будут запущены в короткий промежуток времени между созданием списка и его запуском top, они не будут включены в отображение.

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