请大神帮忙解释这个shell脚本,非常感谢
我正在学习perl编程,下面的脚本对我非常重要,麻烦帮忙,越详细越好,非常感谢!#!/bin/sh#GetmemUsageModifiedUSAGE="Usage:$0p...
我正在学习perl编程,下面的脚本对我非常重要,麻烦帮忙,越详细越好,非常感谢!
#!/bin/sh
#GetmemUsageModified
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
break
fi
done
LOG_FILE="memusage.csv"
echo "ElapsedTime,VmSize,VmRSS" > $LOG_FILE
ELAPSED_TIME=`date`
PERIOD=2 # seconds
# Monitor memory usage forever until script is killed
while :
do
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`
done 展开
#!/bin/sh
#GetmemUsageModified
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
break
fi
done
LOG_FILE="memusage.csv"
echo "ElapsedTime,VmSize,VmRSS" > $LOG_FILE
ELAPSED_TIME=`date`
PERIOD=2 # seconds
# Monitor memory usage forever until script is killed
while :
do
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`
done 展开
展开全部
注释忽略
#!/bin/sh
#GetmemUsageModified
USAGE="Usage: $0 processName" //赋值 $0就是脚本名称
if [ $# -ne 1 ]; then
//$#是输入参数个数 也就是说如果脚本执行时的参数如果为1,输出USAGE并以 1状态退出 一般应该是非正常退出 echo $?可以看到这个状态 为0才是正常
echo $USAGE
exit 1
fi
# In case the monitored process has not yet started
# keep searching until its PID is found
PROCESS_PID="" PID常量
while :
// 一个无限循环 while :中":"为空操作 常为真 所以循环只能条件下强制退出
do
PROCESS_PID=`/sbin/pidof $1`
//获取脚本参数进程的进程号
if [ "$PROCESS_PID.X" != ".X" ]; then
break
fi
//进程号存在 跳出循环 进入后面步骤,即查看该进程信息
done
LOG_FILE="memusage.csv" //指定log文件名
echo "ElapsedTime,VmSize,VmRSS" > $LOG_FILE //将信息输入到LOG_FILE中
ELAPSED_TIME=`date` //获取日期
PERIOD=2 # seconds
# Monitor memory usage forever until script is killed
while : //同上循环
do
VM_SIZE=`awk '/VmSize/ {print $2}' < /proc/$PROCESS_PID/status`
//从该进程状态信息中寻找匹配VmSize的信息 并赋给VM_SIZE 这里的$2不是位置参数$2 而是awk中的域2 也就是将vmsize的信息显示出来
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
//同上个IF 获取VmRSS信息直到存在
fi
echo "$ELAPSED_TIME,$VM_SIZE,$VM_RSS" >> $LOG_FILE//信息写入LOG文件
sleep $PERIOD //sleep2秒 继续
VM_SIZE="" //信息清空
VM_RSS=""
ELAPSED_TIME=`date +%H:%M:%S:%N`//输出时间
done
整体感觉这个脚本应该是获取参数中进程的信息,并提取需要信息 写入LOG文件记录 留作查看用 没什么难度 随便找找相关命令解释 很好理解的
我也是shell初学者 不到之处 后面大神继续补充
#!/bin/sh
#GetmemUsageModified
USAGE="Usage: $0 processName" //赋值 $0就是脚本名称
if [ $# -ne 1 ]; then
//$#是输入参数个数 也就是说如果脚本执行时的参数如果为1,输出USAGE并以 1状态退出 一般应该是非正常退出 echo $?可以看到这个状态 为0才是正常
echo $USAGE
exit 1
fi
# In case the monitored process has not yet started
# keep searching until its PID is found
PROCESS_PID="" PID常量
while :
// 一个无限循环 while :中":"为空操作 常为真 所以循环只能条件下强制退出
do
PROCESS_PID=`/sbin/pidof $1`
//获取脚本参数进程的进程号
if [ "$PROCESS_PID.X" != ".X" ]; then
break
fi
//进程号存在 跳出循环 进入后面步骤,即查看该进程信息
done
LOG_FILE="memusage.csv" //指定log文件名
echo "ElapsedTime,VmSize,VmRSS" > $LOG_FILE //将信息输入到LOG_FILE中
ELAPSED_TIME=`date` //获取日期
PERIOD=2 # seconds
# Monitor memory usage forever until script is killed
while : //同上循环
do
VM_SIZE=`awk '/VmSize/ {print $2}' < /proc/$PROCESS_PID/status`
//从该进程状态信息中寻找匹配VmSize的信息 并赋给VM_SIZE 这里的$2不是位置参数$2 而是awk中的域2 也就是将vmsize的信息显示出来
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
//同上个IF 获取VmRSS信息直到存在
fi
echo "$ELAPSED_TIME,$VM_SIZE,$VM_RSS" >> $LOG_FILE//信息写入LOG文件
sleep $PERIOD //sleep2秒 继续
VM_SIZE="" //信息清空
VM_RSS=""
ELAPSED_TIME=`date +%H:%M:%S:%N`//输出时间
done
整体感觉这个脚本应该是获取参数中进程的信息,并提取需要信息 写入LOG文件记录 留作查看用 没什么难度 随便找找相关命令解释 很好理解的
我也是shell初学者 不到之处 后面大神继续补充
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询