简体   繁体   中英

The number of processes a user is running using bash

我想知道如何获取当前登录的每个用户的进程数。

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.

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
ps -u aboelnour | awk 'END {print NR}' 

将显示用户 aboelnour 运行它的进程数

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

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[*]}

试试吧:

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

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM