写作
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