上次为了监控服务器上的nfodb rails应用,写了一个自动监控重启脚本,稍加改造后,即成了一个通用的进程监控显示程序。
#!/bin/bash
if [ -z $1 ]; then
PROCESS='nfodb'
else
PROCESS=$1
fi
ps -eo pid,pcpu,pmem,rsz,vsz,args|grep $PROCESS|egrep -v "grep|show_process"|awk 'BEGIN { line="--------------------------------------------------------------------------------------------"; print "进程查看程序 PROGRAMING BY ZXP 2009年2月\n"line;i=0;cpu=0;mem=0;rsz=0;vsz=0;print "PID\tCPU\tMEM\tRSZ\tVSZ\tPROC"} {print $1"\t"$2"%\t"$3"%\t"$4"\t"$5"\t"$6" "$7" "$8" "$9" "$10" "$11" "$12; i+=1; cpu+=$2; mem+=$3; rsz+=$4; vsz+=$5} END {print line; mrsz=rsz/1024;mvsz=vsz/1024;printf("TOTAL\t%2.1f%%\t%2.1f%%\t%2.1fMB\t%2.1fMB\t%d 个进程,物理内存占用 %2.1f兆,虚拟内存占用 %2.1f兆\n", cpu, mem, mrsz, mvsz, i, mrsz, mvsz)}'
把上述代码保存为show_process.sh文件,加上执行属性,执行时可以加上进程中的部分字符以显示此类进程占用的全部CPU与内存资源情况,不加参数则缺省显示nfodb应用所占用的CPU与内存情况。执行结果如下
# show_process.sh php
进程查看程序 PROGRAMING BY ZXP 2009年2月
--------------------------------------------------------------------------------------------
PID CPU MEM RSZ VSZ PROC
2108 0.0% 0.0% 92 2768 /bin/su -m -c /usr/bin/php-cgi -q -b 127.0.0.1:5000
2069 1.3% 0.6% 6268 28076 /usr/bin/php-cgi -q -b 127.0.0.1:5000
2109 0.0% 0.0% 172 26604 /usr/bin/php-cgi -q -b 127.0.0.1:5000
2113 0.0% 0.2% 2192 40108 /usr/bin/php-cgi -q -b 127.0.0.1:5000
32179 0.3% 1.0% 10540 30624 /usr/bin/php-cgi -q -b 127.0.0.1:5000
32227 0.4% 1.8% 19524 38992 /usr/bin/php-cgi -q -b 127.0.0.1:5000
32347 0.3% 1.7% 18540 38992 /usr/bin/php-cgi -q -b 127.0.0.1:5000
--------------------------------------------------------------------------------------------
TOTAL 2.3% 5.3% 56.0MB 201.3MB 7 个进程,物理内存占用 56.0兆,虚拟内存占用 201.3兆