使用 top 命令的行数

Line count with top command

我需要找到 运行 命令名称与特定模式匹配的进程数。我需要定期检查进程数。

我正在使用命令模式对 top 命令的输出进行 grep,并尝试每次查找进程数。

以下将(例如)grep所有匹配命令模式的进程并动态打印出来。

top -bcd 1 | grep worker | grep apache

现在不需要列表,我只需要动态打印进程计数。 我尝试了以下对我不起作用的方法。

top -bcd 1 | grep worker | grep apache | wc -l

top -bcd 1 | grep worker | grep -c apache

如果有完全不同的更好的方法,也请告诉我。

就您问题中的原始问题而言,即检查名称与给定模式匹配的进程数,我建议使用 pgrepwatch:

watch pgrep apache

您应该能够使用标准重定向将其直接输出到日志文件 > out。如果这不起作用,您可以随时滚动自己的循环来做类似的事情:

while true; do
    pgrep apache
    sleep 2
done > out

如果您没有 pgrep,总有办法在 linux.

上使用 POSIX 工具生成此结果
while true; do
  awk '[=10=]~"^"re{a++};END{print a}' re=apache /proc/[0-9]*/cmdline
  sleep 2
done