Eu monitoro vários processos com, por exemplo, '#top -p 22055,21995' Mas há muitos deles, todos 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 posso monitorar usando o nome regex do processo fwk* Quero dizer, todos os processos começando em 'fwk'?
Responder1
top
não fará isso por si só, mas você pode escrever um script de shell simples que roda top
em modo batch (a -b
opção), filtrandoqueusando 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, dada a -E
opção. Mas seu exemplo pode ser tratado apenas com um espaço em branco e "fwk" (a menos que você tenha um usuário com o mesmo nome).
Algumas versões detop
pode precisar de uma opção diferente (como -d
) para executar apenas uma vez no modo em lote.
Responder2
# 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 algum fwk*
processo for iniciado no curto espaço de tempo entre a geração da lista e a execução top
, ele não será incluído na exibição.