Prozessanzahl jedes Benutzers im Befehl ps aux

8

Wie kann ich ein Skript erstellen , in dem Prozessdurchlauf von jedem Benutzer zu zählen ps aux. Ich habe das benutzt

ps aux  | awk '{print $1}' | grep root | wc -l

Es wird jedoch nur die Anzahl der Root-Benutzer aufgelistet. Ich möchte die Anzahl der Prozesse für jeden Benutzer auflisten. Ich brauche so etwas:

root    20
jamshi  15 
Jamsheer P.
quelle
. [root @ server1 /] # ps aux BENUTZER-PID% CPU% MEM VSZ RSS TTY STAT STARTZEIT root 1 0.0 0.0 19236 180? SNs Aug15 0:03 root 2 0.0 0.0 0 0? SN Aug15 0:00 root 3 0.0 0.0 0 0? SN Aug15 0:00 mit dem Namen 31745 0,0 0,6 697276 3236? Ssl Aug17 0:14 Ich brauche Ergebnis wie unten = root 3 mit dem Namen 1
Jamsheer P

Antworten:

15

ps -fo user | sort | uniq -c ist einen Versuch wert.

Der Befehl ps -eo user=|sort|uniq -clistet die Prozessanzahl nach Benutzer auf.

ps -eo user=|sort|uniq -c
      2 avahi
      1 kernoops
      1 messagebus
      1 nobody
    231 root
      1 statd
      5 steve
      1 syslog

Wenn das Umblättern der Spaltenreihenfolge zum Lesen erforderlich ist, leiten Sie sie durch awk '{ print $2 " " $1 }'

Steve
quelle
Vielen Dank für Ihre Antwort. [Root @ server1 /] # ps aux USER PID% CPU% MEM VSZ RSS TTY STAT STARTZEIT root 1 0.0 0.0 19236 180? SNs Aug15 0:03 root 2 0.0 0.0 0 0? SN Aug15 0:00 root 3 0.0 0.0 0 0? SN Aug15 0:00 mit dem Namen 31745 0,0 0,6 697276 3236? Ssl Aug17 0:14 Ergebnis Ihres Befehls ===== [root @ server1 /] # ps -fo user | sortieren | uniq -c 4 root 1 USER Ich brauche ein Ergebnis wie unten = root 3 mit dem Namen 1
Jamsheer P
3

Du kannst es versuchen

ps aux |
awk 'NR>1{tot[$1]++;}
     END{for(id in tot)printf "%s %s\n",id,tot[id]}'
meuh
quelle