我可以使用Linux获得每个进程的内存使用量吗? 我们使用sysstat / sar监控我们的服务器。但除此之外 看到记忆在某个时刻脱离了屋顶,我们无法精确定位 哪个过程变得越来越大。 是否有一种方法可以使用sar(或其他工具)来获取内存 每个过程? ,看看它,稍后呢?
答案 0 :(得分:0)
这纯粹是偏好,但在你知道自己在寻找什么之前,我会保持简洁。我会创建一个cronjob
来首先输出你的可用内存,磁盘和CPU使用情况,然后显示十大罪魁祸首。
#!/bin/sh
free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'
df -h | awk '$NF=="/"{printf "Disk Usage: %d/%dGB (%s)\n", $3,$2,$5}'
top -bn1 | grep load | awk '{printf "CPU Load: %.2f\n", $(NF-2)}'
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
找到罪魁祸首之后,你可以多练习一下,深入了解一些细节。
答案 1 :(得分:0)
sysstat
包括pidstat
,其手册页显示:
pidstat
命令用于监视Linux内核当前正在管理的各个任务。它为使用选项-p
选择的每个任务或Linux内核管理的每个任务写入标准输出活动[...]
Linux内核任务包括用户空间进程和线程(以及内核线程,在此最不重要)。
但是不幸的是,sysstat
不支持从pidstat
收集历史数据,并且作者似乎也没有兴趣提供这种支持(GitHub问题):