我只想知道如何找到特定进程在特定时间(比如5秒钟)内的内存消耗情况。
我是 Linux 新手,所以希望能够提供详细的操作步骤。
使用top -p PID
命令,其中PID是进程ID。应显示有关进程的信息,包括系统内存使用百分比。键入d
和秒数以更改刷新率。
HOST-RESOURCES-MIB :: hrSWRunPerfCPU 是此进程消耗的总系统CPU资源的百分之一秒数。 请注意,在多处理器系统上,此值可能会在真实(挂钟)时间的百分之一秒内增加超过一百个一百分之一秒。
HOST-RESOURCES-MIB :: hrSWRunPerfMem 是为此进程分配的实际系统内存的总量。
**
进程监视脚本:**
echo "IP: "
read ip
echo "specfiy pid: "
read pid
echo "interval in seconds:"
read interval
while [ 1 ]
do
date
snmpget -v2c -c public $ip HOST-RESOURCES-MIB::hrSWRunPerfCPU.$pid
snmpget -v2c -c public $ip HOST-RESOURCES-MIB::hrSWRunPerfMem.$pid
sleep $interval;
done
使用watch命令来定期执行你的脚本。以下是一个示例:
watch 'cat /proc/status' --interval=5
watch 'ps aux' --interval=5
watch
的间隔是多少,ps u -p PID
刷新其值的速度都不如 top
快。 - dwardcat /proc/12488/maps
。 - Basile Starynkevitch这个之前发布的问题:
看起来可能会彻底回答你的问题。
编辑:我个人最喜欢的Linux实用程序是top,可以检查进程的资源使用情况,但由于链接中解释的原因,它可能会误导。
malloc
中重新使用和返回)分配。你可能想使用valgrind
。 - Basile Starynkevitch