要求每秒钟输出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