The number of processes a user is running using bash

早过忘川 提交于 2019-12-21 07:51:11

问题


I would like to know how I could get the number of processes for each user that is currently logged in.


回答1:


Give this a try:

ps -u "$(echo $(w -h | cut -d ' ' -f1 | sort -u))" o user= | sort | uniq -c | sort -rn

In order to properly handle usernames that may be longer than eight characters, use users instead of w. The latter truncates usernames.

ps -u "$(echo $(printf '%s\n' $(users) | sort -u))" o user= | sort | uniq -c | sort -rn



回答2:


You could try some variation of this:

ps haux Ou | cut '-d ' -f1 | uniq -c

It gives you the number of processes for each users (being logged in or not). Now you could filter those results using the output of the w command or another way of determining who is logged in.




回答3:


ps -u aboelnour | awk 'END {print NR}' 

will show number of process which user aboelnour running it




回答4:


If you are ever concerned about nearing the user process limit shown by ulimit -a, the you want to get ALL the processes (including LWPs). In such a case you should use:

ps h -Led -o user | sort | uniq -c | sort -n

On one system doing this:

ps haux Ou | cut '-d ' -f1 | uniq -c

yields:

# ps haux Ou | cut '-d ' -f1 | uniq -c
 30 user1
  1 dbus
  3 user2
  1 ntp
  1 nut
  1 polkitd
  2 postfix
124 root
  2 serv-bu+

where doing the former yields the true process count:

# ps h -Led -o user | sort | uniq -c | sort -n
  1 ntp
  1 nut
  2 dbus
  2 postfix
  2 serv-builder
  3 user2
  6 polkitd
141 root
444 user1



回答5:


If you just want a count of processes you can use procfs directly like this: (requires linux 2.2 or greater)

you can use wc:

number_of_processes=`echo /proc/[0-9]* | wc -w`

or do it in pure bash (no external commands) like this

procs=( /proc/[0-9]* ) 
number_of_proccesses=${#procs[*]}

If you only want the current userid

procs=( /proc/[0-9]*/fd/. ) 
number_of_proccesses=${#procs[*]}



回答6:


userlist=$(w|awk 'BEGIN{ORS=","}NR>2{print $1}'|sed 's/,$//' )
ps -u "$userlist"



回答7:


Following links contain useful ps commands options including your requirements:

  • Displaying all processes owned by a specific user
  • Show All Running Processes in Linux



回答8:


Here is my solution, for Linux:

$ find /proc –user $USER -maxdepth 1 -name '[0-9]*' | wc –l

This solution will not fail when the number of processes is larger than the command line limit.



来源:https://stackoverflow.com/questions/3874677/the-number-of-processes-a-user-is-running-using-bash

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!