当前位置: 技术问答>linux和unix
牛人来帮忙解析一个shell脚本(用于统计一个进程的内存使用情况)
来源: 互联网 发布时间:2016-04-21
本文导语: 别人那里拿来的一个脚本(据说最初是从网上找到的),用于记录一个进程的内存使用情况,现在有些地方看不懂,前来求教,谢过。 问题1:if [ "$PROCESS_PID.X" != ".X" ]; 这个语句中,在$PROCESS_PID后面加了.X是怎么...
别人那里拿来的一个脚本(据说最初是从网上找到的),用于记录一个进程的内存使用情况,现在有些地方看不懂,前来求教,谢过。
问题1:if [ "$PROCESS_PID.X" != ".X" ]; 这个语句中,在$PROCESS_PID后面加了.X是怎么回事呢?
问题2:awk '/VmSize/ {print $2}' 这个语句是啥意思呢?
#!/bin/sh
#GetmemUsageModified2
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=`/sbin/pidof $1`
if [ "$PROCESS_PID.X" != ".X" ]; then //问题1
break
fi
done
LOG_FILE="memusage.csv"
#echo "ElapsedTime,VmSize,VmRSS" > $LOG_FILE
ELAPSED_TIME=`date`
PERIOD=10 # seconds
while :
do
if [ -d /proc/$PROCESS_PID ] ; then
VM_SIZE=`awk '/VmSize/ {print $2}' $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
问题1:if [ "$PROCESS_PID.X" != ".X" ]; 这个语句中,在$PROCESS_PID后面加了.X是怎么回事呢?
问题2:awk '/VmSize/ {print $2}' 这个语句是啥意思呢?
#!/bin/sh
#GetmemUsageModified2
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=`/sbin/pidof $1`
if [ "$PROCESS_PID.X" != ".X" ]; then //问题1
break
fi
done
LOG_FILE="memusage.csv"
#echo "ElapsedTime,VmSize,VmRSS" > $LOG_FILE
ELAPSED_TIME=`date`
PERIOD=10 # seconds
while :
do
if [ -d /proc/$PROCESS_PID ] ; then
VM_SIZE=`awk '/VmSize/ {print $2}' $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
|
问题1:if [ "$PROCESS_PID.X" != ".X" ]; 这个语句中,在$PROCESS_PID后面加了.X是怎么回事呢?
这是一种很多人的习惯写法 其实和if [ "$PROCESS_PID" != "" ]; 是一样的,没必要这么写
问题2:awk '/VmSize/ {print $2}' 这个语句是啥意思呢?
对有VmSize 字样的行,输出该行的第二列
这是一种很多人的习惯写法 其实和if [ "$PROCESS_PID" != "" ]; 是一样的,没必要这么写
问题2:awk '/VmSize/ {print $2}' 这个语句是啥意思呢?
对有VmSize 字样的行,输出该行的第二列