nach oben: Wie überwacht man Prozesse mithilfe von Regex-Namen?

nach oben: Wie überwacht man Prozesse mithilfe von Regex-Namen?

Ich überwache mehrere Prozesse mit zB '#top -p 22055,21995' Aber es gibt viele von ihnen, die alle mit fwk* beginnen, zB 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 

Wie kann ich mithilfe des regulären Ausdrucks den Namen des Prozesses fwk* überwachen, ich meine alle Prozesse, die mit „fwk“ beginnen?

Antwort1

topwird dies nicht von selbst tun, aber Sie könnten ein einfaches Shell-Skript schreiben, das topim Batch-Modus (die -bOption) ausgeführt wird und filtertDasmit grep und in einer Schleife. Es wäre nicht interaktiv.

Zum Beispiel

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

greperkennt reguläre Ausdrücke, wenn die -EOption vorhanden ist. Aber Ihr Beispiel kann mit nur einem führenden Leerzeichen und „fwk“ behandelt werden (es sei denn, Sie haben zufällig einen Benutzer mit demselben Namen).

Einige Versionen vontopMöglicherweise ist eine andere Option (z. B. -d) erforderlich, um nur einmal im Batchmodus ausgeführt zu werden.

Antwort2

# 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

HINWEIS: Wenn fwk*in der kurzen Zeit zwischen dem Erstellen der Liste und dem Ausführen Prozesse gestartet werden top, werden diese nicht in die Anzeige aufgenommen.

verwandte Informationen