鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 服务器相关 > 批处理 > >

nmon监控脚本

来源:互联网 作者:佚名 时间:2015-11-04 09:40
使用nmon对linux进行监控时,命令行中需要输入监控时长、采样次数、日志路径等多个参数,比较繁琐,因此通过shell脚本控制nmon的执行,每次只需要输入监控的时长(分钟或小时数)即可。 无 #!/bin/sh#######################################################
使用nmon对linux进行监控时,命令行中需要输入监控时长、采样次数、日志路径等多个参数,比较繁琐,因此通过shell脚本控制nmon的执行,每次只需要输入监控的时长(分钟或小时数)即可。 <无>
#!/bin/sh
##################################################################################
#FileName:	nmon_monitor.sh
#Author:	Defias
#Date	2014-12-2
#example:./nmon.sh -m 30   ./nmon.sh -h 1     ./
##################################################################################

nmonpage_name="nmon_linux_14i.tar.gz"
nmon_name="nmon_x86_64_rhel54"


usage()
{
    echo "usage: $0 -m|-h  minute|hour"
}






check_pid()
{
#进程检查
nmonpid=`ps -ef | grep  ${nmon_name} | grep -v grep | awk '{print $2}'`
#echo "nmonpid is ${nmonpid}"
if [ -n "${nmonpid}" ];then
	echo "process nmon is running!"
        echo "kill process nmon? y/n"
	while true
	do
		read x
		case "$x" in
			y | yes | Y | Yes | YES)
				kill -9 $nmonpid
				if [ $? != 0 ];then
				    echo "kill -9 $nmonpid fail!"
				    exit -1
				fi
				#echo "kill -9 $nmonpid success!"
                                break
				;;
			n | no | N | No | NO)
				echo "nothing to do!"
				exit -1
				;;
			*) 
				echo "Please enter yes or no"
				;;
		esac
	done
fi
}


#参数检查
if [ $# -ne 2 ];then
    usage
    exit 1
fi

opt="$1"
optdata="$2" 

if [ ! ${optdata} -eq ${optdata} ]; then
	echo "$optdata is not a number"  
	usage
	exit 1
fi


#进程检查
check_pid


#包解压
if [ ! -f $nmonpage_name ];then
	echo "don't find $nmonpage_name file! "
	exit 1
fi
chmod 775 $nmonpage_name

pwdpath=`pwd`
if [ ! -d ${pwdpath}/bin ];then
   mkdir ${pwdpath}/bin
fi
nmonpath="${pwdpath}/bin/"

if [ ! -d ${pwdpath}/logs ];then
   mkdir ${pwdpath}/logs
fi
logpath="${pwdpath}/logs/"

tar -zxvf $nmonpage_name -C $nmonpath > /dev/null


#启动nmon监控
case  "$opt"  in
-m)
	if [ $optdata -le 60 ];then
	   ntime=$((${optdata} * 60 / 2))
	   ${nmonpath}${nmon_name} -fT -s 2 -c $ntime -m $logpath
	elif [ $optdata -le 600 ];then
	    ntime=$((${optdata} * 60 / 5))
	    ${nmonpath}${nmon_name} -fT -s 5 -c $ntime -m $logpath
	elif [ ${optdata} -le 1440 ];then
	    ntime=$((${optdata} * 60 / 10))
	    ${nmonpath}${nmon_name} -fT -s 10 -c $ntime -m $logpath
	else 
	    ntime=$((${optdata} * 60 / 15))
	    ${nmonpath}${nmon_name} -fT -s 15 -c $ntime -m $logpath
        fi
        echo "nmon monitor success!"
;;

-h) 
	if [ $optdata -le 1 ];then
	    ntime=$((${optdata} * 60 * 60 / 2))
	    ${nmonpath}${nmon_name} -fT -s 2 -c $ntime -m $logpath
	elif [ $optdata -le 10 ];then
	    ntime=$((${optdata} * 60 * 60 / 5))
	    ${nmonpath}${nmon_name} -fT -s 5 -c $ntime -m $logpath
	elif [ ${optdata} -le 24 ];then
	    ntime=$((${optdata} * 60 * 60 / 10))
	    ${nmonpath}${nmon_name} -fT -s 10 -c $ntime -m $logpath
	else 
	    ntime=$((${optdata} * 60 * 60 / 15))
	    ${nmonpath}${nmon_name} -fT -s 15 -c $ntime -m $logpath  
        fi	
        echo "nmon monitor success!"
;;
*)
	echo "$opt is error!"
	usage
;;
esac
网友评论
<