如何使用 bash 计算进程实例的数量?

如何使用 bash 计算进程实例的数量?

写作

ps aux | awk '{print $11}'

给我所有的流程实例,但是我如何计算它们,是否有命令可以做到这一点?

答案1

每行打印ps aux有关一个进程的信息(包括标题,可以使用选项禁用--no-heading)。

因此,您只需计算此输出的行数即可轻松计算进程数,使用方法如下wc

ps aux --no-heading | wc -l

答案2

其他答案已经提到ps aux添加标题,因此您--no-heading还需要选项。我们还可以做的是,我们可以使用pgrep命令获取进程 PID,然后对其进行计数。

基本上我们可以做的,

pgrep '^.*$' | awk 'END{print NR}'

这里的诀窍是,END{}代码块总是在处理完文件、stdin 或管道后执行,而 NR 保持不变,即“记录数”或行数(如果只有一个文件或管道)。至于pgrep,我们只是用正则表达式匹配任何进程^.*$,从而获得所有 PID 的列表。

对于计算行数,你可以采用以下任何方法如何计算文本行数?问题,不一定非得是awk

答案3

如果你想使用awk

ps aux --no-heading | awk 'END {print NR}'

如果你想计算特定用户的进程:

ps -u ravexina -f --no-header | wc -l

另外,您可以/proc自己检查文件系统:

ls /proc | grep ^[1-9] -c

或者

ls -d /proc/[1-9]* | wc -l

相关内容