top como monitorar processos usando o nome regex?

0

Eu monitora vários processos com, por exemplo, '#top -p 22055,21995' Mas há muitos deles começando com fwk *, ou seja, 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 

Como eu posso monitorar usando o nome regex do processo fwk * Eu quero dizer todos os processos com a partir de 'fwk'?

    
por irom 05.11.2015 / 14:03

2 respostas

0

top não fará isso sozinho, mas você pode escrever um script de shell simples que executa top no modo batch (a opção -b ), filtrando esse usando grep e em um loop. Não seria interativo.

Por exemplo

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

grep reconhece expressões regulares, considerando a opção -E . Mas o seu exemplo pode ser tratado apenas com um espaço em branco à esquerda e "fwk" (a menos que você tenha um usuário com o mesmo nome).

Algumas versões de top podem precisar de uma opção diferente (como -d ) para ser executada apenas uma vez modo de lote.

    
por 05.11.2015 / 14:24
1
# 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

NOTA: se qualquer fwk* processos forem iniciados no curto espaço de tempo entre a geração da lista e a execução de top , eles não serão incluídos na exibição.

    
por 05.11.2015 / 23:25

Tags