如何找到过去 X 秒内使用最多 RAM 的进程?

如何找到过去 X 秒内使用最多 RAM 的进程?

你能帮我解决这个问题吗?我正在尝试编写一个 bash 脚本,它将监视 ram 使用情况(不仅是 ram,还包括 cpu 和网络),并向我显示过去 X 秒内使用最多 ram 的 3 个进程?我知道我可以通过运行以下命令找到哪些进程使用最多的内存:

ps aux | awk '{print $2, $4, $11}' | sort -k2rn | head -n 3

但这怎么能重复呢?我不想看到此时此刻的情况,而是监视(让它成为)60 秒的情况,并查看使用最多 RAM 的前 3 个进程。

答案1

我使用dstat命令。很有用。使用探索它man dstat

例如:

每 3 秒查找最昂贵的内存:

#dstat --top-mem 3 --most-expensive- memory process firefox 1430M firefox 1430M firefox 1431M firefox 1435M firefox 1435M firefox 1435M firefox 1435M firefox 1438M

同样,你可以为 cpu 、 network 、 IO 等打点。

dstat --top-cpu 3 -most-expensive- cpu process
firefox 3.5 firefox 4.5 firefox 2.4 firefox 2.6 firefox 2.8 firefox 2.0 firefox 2.8

答案2

前 3 个内存消耗最大的进程命令:

ps auxxx --sort=-rss |头-4

占用 CPU 最多的 3 个进程:

ps auxxx --sort=-%cpu |头-4

您可以通过 Cronjob 每分钟运行这些脚本。

          • /tmp/serverhealth.sh

相关内容