使用 ps -Af 计算进程数

使用 ps -Af 计算进程数

我必须使用 ps -Af 命令来计算我远程使用的计算机上的 emacs 进程数。我该从哪里开始呢?

答案1

ps -Af不是最好的方法。

f选项是多余的,如果非 emacs 进程使用 emacs 或包含它的字符串作为其参数之一,则可能会触发误报,更不用说名为 emacs 的用户(不太可能)的情况。

我建议使用这个更简单的命令:

pgrep emacs | wc -l

答案2

你可以做ps -C emacs --no-heading | wc -l

ps -C command按命令名称输出进程

编辑:ps --help非常有趣

答案3

正如 Hennes 所说,你可以使用“ ps -AF | grep emacs | wc -l”来做到这一点。但你也会在那里拥有自己的命令。要删除此命令,您可以使用“ grep -v”(或--inverted-match)来过滤掉您不想计数的命令。所以它看起来像这样:ps -AF | grep emacs | grep -v grep | wc -l

答案4

从首要原则开始。

首先确定要求您使用的命令的具体用途,以及指定的选项 ( -Af) 如何工作。为此,请阅读man ps

-A 选择所有进程。
-f 进行完整格式列表。此选项可以与许多其他 UNIX 样式选项结合使用以添加其他列。

因此,您的起点是为您的用户运行的所有进程的输出,以完整格式列出。在尝试进行任何处理之前运行命令以查看完整输出:

ps -Af

为了对emacs进程进行计数,您需要通过过滤工具通过管道传输输出来处理输出和/或对相应的匹配进行计数。grep是一个不错的选择,但为了效率和简单性,我会使用awk

ps -Af | awk '/emacs/ && !/awk/ { a++ } END { print a }'

这会搜索模式/emacs/,排除搜索本身的模式 ,!/awk/增加匹配项{ a++ },然后打印总计{ print a }

这只需要一个管道,并优雅地处理不返回计数中的搜索过程的问题。

相关内容