Quá trình Đếm của mỗi người dùng trong lệnh ps aux


8

Làm thế nào tôi có thể tạo một tập lệnh để đếm quá trình được chạy bởi mỗi người dùng ps aux. Tôi đã sử dụng cái này

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

nhưng nó chỉ liệt kê số lượng người dùng root. Tôi muốn liệt kê số lượng quá trình cho mỗi người dùng. Tôi cần một cái gì đó như thế này:

root    20
jamshi  15 

. [root @ server1 /] # ps aux NGƯỜI DÙNG PID% CPU% MEM VSZ RSS TTY STAT START TIME root 1 0.0 0.0 19236 180? SN15 tháng 8 0:03 gốc 2 0,0 0,0 0 0? SN Aug15 0:00 root 3 0,0 0,0 0 0? SN Aug15 0:00 có tên là 31745 0,0 0,6 697276 3236?
Ssl 17/8/14

Câu trả lời:


15

ps -fo user | sort | uniq -c đáng để thử.

Lệnh ps -eo user=|sort|uniq -csẽ liệt kê số lượng quá trình theo người dùng.

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

Nếu lật thứ tự cột để đọc là bắt buộc, hãy chuyển nó qua awk '{ print $2 " " $1 }'


Cảm ơn bạn đã trả lời. [Root @ server1 /] # ps aux NGƯỜI DÙNG PID% CPU% MEM VSZ RSS TTY STAT START TIME root 1 0.0 0.0 19236 180? SN15 tháng 8 0:03 gốc 2 0,0 0,0 0 0? SN Aug15 0:00 root 3 0,0 0,0 0 0? SN Aug15 0:00 có tên là 31745 0,0 0,6 697276 3236? Ssl ngày 17 tháng 8, kết quả của lệnh của bạn ===== [root @ server1 /] # ps -fo user | sắp xếp | uniq -c 4 root 1 NGƯỜI DÙNG Tôi cần kết quả như bên dưới = root 3 có tên 1
Jamsheer P

3

Bạn co thể thử

ps aux |
awk 'NR>1{tot[$1]++;}
     END{for(id in tot)printf "%s %s\n",id,tot[id]}'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.