如何在Linux中每5秒钟查找特定进程的内存消耗

9

我只想知道如何找到特定进程在特定时间(比如5秒钟)内的内存消耗情况。

我是 Linux 新手,所以希望能够提供详细的操作步骤。


你能定义一下“特定时间内的内存消耗”对你来说是什么意思吗?请记住,已经被“释放”的内存区域通常仍然被系统(因为它将在稍后的malloc中重新使用和返回)分配。你可能想使用valgrind - Basile Starynkevitch
4个回答

29

使用top -p PID命令,其中PID是进程ID。应显示有关进程的信息,包括系统内存使用百分比。键入d和秒数以更改刷新率。


要检索进程的PID,可以使用ps -aux | grep "process"命令,其中"process"是您要查找的进程名称。 - Bharat Kul Ratan

5
您可以使用SNMP获取网络中特定设备中进程的内存和CPU使用情况。 :) 要求:
  • 运行该进程的设备应安装并运行SNMP。
  • SNMP应配置为接受来自运行以下脚本的地方的请求(它可以在snmpd.conf中进行配置)。
  • 您应该知道要监视的进程的进程ID(PID)。
注意事项:
  • 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

内存输出将以千字节为单位。 - Roselyn Verbo Domingo

5

使用watch命令来定期执行你的脚本。以下是一个示例:

watch 'cat /proc/status' --interval=5

watch 'ps aux' --interval=5

如果我想检查特定的进程,比如 pid = 12468? - Vamsi
目前我正在使用这段代码来获取特定进程的CPU使用率和其他信息。unix95 = ps -p 12994 -o pid,sz,pcpu,ruser,args,time,stime,pmem,etime 我想每隔5秒检查一次。 - Vamsi
2
使用 cat /proc/pid/status 或其他命令。 - 0x90
无论 watch 的间隔是多少,ps u -p PID 刷新其值的速度都不如 top 快。 - dward
1
如果您想更好地了解进程12488的地址空间,请使用cat /proc/12488/maps - Basile Starynkevitch

3

在您提供的回复中,我们可以看到进程及其启动时间、CPU使用率等信息。除此之外,我想要检查进程内存使用情况,持续5秒钟。 - Vamsi
你是指在那段时间内内存使用量的变化吗?我的第一反应可能是编写一个简单的脚本来运行一个命令,每5秒输出一个进程的内存使用情况,并持续计算增量。 - mdunsmuir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接