您的位置:首页 > 运维架构

使用top查看单独进程内存使用量

2016-04-16 23:55 218 查看
要求每秒钟输出gis的进程所使用的内存数量,方法由于/etc/crontab这个时能对每分钟进行输出,所有职能把查询命令以进程的形式挂载到系统后台一直运行。

1,取的GIS使用的pid
ps -ef |grep NoAppLoader

查询结果为:(如果服务不重启pid是306 782 784 32767)

2,top -p <PID> -d 1 -b | grep <PID>

创建一名为mem.sql的可以执行文件。输入
#!/bin/bash
top -p 306 -d 1 -b | grep 306 > log1.txt 2>&1 & top -p 782 -d 1 -b | grep 782 > log2.txt 2>&1 & top -p 784 -d 1 -b | grep 784 > log3.txt 2>&1 & top -p 32767 -d 1 -b | grep 32767 > log4.txt 2>&1

3,此命令添加后台运行(终端可以断开)
nohup ./mem.sql &

4,杀掉此后台进程
ps axu |grep top
查看pid后

kill -9 <pid>

784 gis43200 16 0 2397m 901m 3156 S 0.0 11.1 39:18.20 java
784 gis43200 16 0 2397m 901m 3156 S 0.0 11.1 39:18.20 java
784 gis43200 16 0 2397m 901m 3156 S 0.0 11.1 39:18.20 java

901m为此进程使用数量(未释放内存),使用内存百分比为11.1%(用总内存程序11.1%这个更准确些)

需要注意的是top -p <PID> -d 1 -b | grep <PID> 和top命令之间用 & 转义字符

以下是更好的截取某一进程在,某一时刻进行动态使用的请款,输出每秒,进程24576使用的内存,cpu,及执行时间情况。

#!/bin/sh
top -p 24576 -d 1 -b | awk '$2=="-"{print $3}$1==24576' >> log.txt &

时间每5秒一次,cpu,内存每1秒一次

top -p 24576 -d 1 -b | awk '$2=="-"&&n++%5==0{print $3}$1==24576'

2010-01-26

本文出自 “五片棱角” 博客,请务必保留此出处http://hi289.blog.51cto.com/4513812/1764632
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: