Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1205620
  • 博文数量: 1211
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 14340
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-09 11:20
文章分类

全部博文(1211)

文章存档

2011年(1)

2008年(1210)

我的朋友

分类: 服务器与存储

2008-06-16 20:29:39


4. 创建get_vmstat.ksh脚本

改脚本用于定时执行vmstat命令并且将结果存入数据库。

# get_vmstat.ksh

#!/bin/ksh

#----------------------------------------

# 首先设定环境变量,根据实际环境修改. . . .

#----------------------------------------

ORACLE_SID=kamusdb

export ORACLE_SID

ORACLE_HOME=`cat /var/opt/oracle/oratab|grep 
^$ORACLE_SID:|cut -f2 -d':'`

export ORACLE_HOME

PATH=$ORACLE_HOME/bin:$PATH

export PATH


SERVER_NAME=`uname -a|awk '{print $2}'`

typeset -u SERVER_NAME

export SERVER_NAME


#----------------------------------------

# 每5分钟运行一次vmstat(300秒),可以根据实际情况修改 . . . .

#----------------------------------------

SAMPLE_TIME=300


#----------------------------------------

# 脚本一旦运行将不会停止,除非关闭操作系统 . . . .

# -S参数表示监控swap空间的情况,报告si,so列

# msg$$中的$$表示一个任意2位数字,系统自动生成

#----------------------------------------

while true

do

vmstat –S ${SAMPLE_TIME} 2 > /tmp/msg$$


#----------------------------------------

# Solaris系统的vmstat没有wait CPU统计,所以我们在那一列中存入0

# $1, $2, $6, $7等数字分别表示vmstat输出中的第几列,

# 每个Unix系统中的vmstat输出可能都不一样,

# 所以修改这些列号,就可以应对不同的操作系统。

#----------------------------------------

cat /tmp/msg$$|sed 1,3d | awk '
{ printf("%s %s %s %s %s %s %s %s %s %s n", 
$1, $2, $6, $7, $8, $9, $12, $20, $21, $22) }' 
| while read RUNQUE WAITQUE SWAPIN SWAPOUT
 PAGE_IN PAGE_OUT PAGE_SCAN USER_CPU SYSTEM_CPU IDLE_CPU 

do


$ORACLE_HOME/bin/sqlplus perfstat/perfstat <

5. 创建run_vmstat.ksh脚本

该脚本放在crontab中,用来定时检查get_vmstat.ksh脚本有没有正常运行,如果在运行,那么不作任何动作,如果不在运行,那么就运行get_vmstat.ksh脚本。这个脚本的意义在于防止重新启动操作系统之后忘记运行get_vmstat.ksh脚本。

# run_vmstat.ksh

#!/bin/ksh

#----------------------------------------

# 首先设定环境变量,根据实际环境修改. . . .

#----------------------------------------

SCRIPT_PATH=`echo ~oracle/vmstat`

export SCRIPT_PATH

ORACLE_SID=kamusdb

export ORACLE_SID

ORACLE_HOME=`cat /var/opt/oracle/oratab|grep $ORACLE_SID:|cut -f2 -d':'`

export ORACLE_HOME

PATH=$ORACLE_HOME/bin:$PATH

export PATH


#----------------------------------------

# 作更进一步地控制,在系统没有操作的时间内停止监控

# 晚上8点到第二天凌晨8点之间停止监控

# 其它时间如果get_vmstat不在运行,就运行它
#----------------------------------------


HOUR=`date +"%H"`

check_stat=`ps -ef|grep get_vmstat|grep -v grep|wc -l`

vmstat_num=`expr $check_stat`


if [ $HOUR -gt 19 ] || [ $HOUR -lt 8 ]

then 

if [ $vmstat_num -gt 0 ]

then kill -9 `ps -ef|grep get_vmstat
|grep -v grep|awk '{print $2 }'` > /dev/null

fi

else

if [ $vmstat_num -le 0 ]

then nohup $SCRIPT_PATH/get_vmstat.ksh > /dev/null 2>&1 &

fi

fi
阅读(2979) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~