- 论坛徽章:
- 0
|
本帖最后由 koshihaku 于 2010-08-14 07:54 编辑
毕业设计需要做个实验,我在网上抄了两个脚本,第一个生成log文档,记录httpd进程的内存使用情况,第二个用来自动激发第一个脚本。可是运行的时候没有反应,也没有生成log文档。麻烦帮忙看看哪里出了错误好么?非常感谢!!
好像是因为我监控的是Apache服务器的进程,而进程没有结束的时候是不能生成LOGFILE的。
脚本里哪里可以更改一下呢?我想修改一下,实现以下功能:
1. 第二个脚本用来自动激发第一个脚本。
2. 每次运行第一个脚本时候,不管监控的httpd进程是否结束,都写入LOG FILE,每隔2秒写入一次。
请问怎么修改脚本好呢?
第一个脚本(监控):- #!/bin/sh
- #G.sh 20100813
- USAGE="Usage: $0 processName"
- if [ $# -ne 1 ]; then
- echo $USAGE
- exit 1
- fi
- # In case the monitored process has not yet started
- # keep searching until its PID is found
- PROCESS_PID=""
- while :
- do
- PROCESS_PID=`/bin/pidof $1`
- if [ "$PROCESS_PID.X" != ".X" ]; then
- break
- fi
- done
- LOG_FILE="memusage.csv"
- echo "ElapsedTime,VmSize,VmRSS" > $LOG_FILE
- ELAPSED_TIME=`date +%H:%M:%S:%N`
- PERIOD=2 # seconds
- while :
- do
- if [ -d /proc/$PROCESS_PID ] ; then
- VM_SIZE=`awk '/VmSize/ {print $2}' < /proc/$PROCESS_PID/status`
- if [ "$VM_SIZE.X" = ".X" ]; then
- continue
- fi
- VM_RSS=`awk '/VmRSS/ {print $2}' < /proc/$PROCESS_PID/status`
- if [ "$VM_RSS.X" = ".X" ]; then
- continue
- fi
- echo "$ELAPSED_TIME,$VM_SIZE,$VM_RSS" >> $LOG_FILE
- sleep $PERIOD
- VM_SIZE=""
- VM_RSS=""
- ELAPSED_TIME=`date +%H:%M:%S:%N`
- else
- echo "$1 is no longer a running process"
- exit 0
- fi
- done
复制代码 第二个脚本(自动激发):- #!/bin/sh
- #
- #GetMemUsage launch script
- cmd=$1
- if [ -n $cmd ] ; then
- ./G httpd $cmd &
- $cmd
- wait
- fi
- if ps x | perl -ne 'print if /\b'$cmd'\b/' > /dev/null 2>&1 ; then
- wait
- else
- exit 0
- fi
复制代码 |
|