創建一個守護進程:bash
#! /bin/sh PRO_NAME=./xxxx.sh while true ; do #用ps獲取$PRO_NAME進程數量 echo ''> nohup.out NUM=`ps aux | grep -w ${PRO_NAME} | grep -v grep |wc -l` #echo $NUM #少於1,重啓進程 if [ "${NUM}" -lt "1" ];then echo "${PRO_NAME} was killed" ${PRO_NAME} -d #大於1,殺掉全部進程,重啓 elif [ "${NUM}" -gt "1" ];then echo "more than 1 ${PRO_NAME},killall ${PRO_NAME}" killall -9 $PRO_NAME ${PRO_NAME} -d fi #kill殭屍進程 NUM_STAT=`ps aux | grep -w ${PRO_NAME} | grep T | grep -v grep | wc -l` if [ "${NUM_STAT}" -gt "0" ];then killall -9 ${PRO_NAME} ${PRO_NAME} -d fi sleep 5s done exit 0
創建一個重啓DB的腳本(僅限rac使用),純粹爲方便:ide
#!/bin/bash if [ $1 ] then { db_name=$1 srvctl stop database -d $db_name -o abort num=`ps -ef|grep -i smon_|grep -v grep|grep -v -i asm|awk '{print $2}' ` if [ ! $num ] then echo "database restart........." fi while [ "$num" ] do sleep 1 num=`ps -ef|grep -i smon_|grep -v grep|grep -v -i asm |awk '{ print $2 }'` echo "database not shutdown ,please check!" done srvctl start database -d $1 num=`ps -ef|grep -i smon_|grep -v grep|grep -v -i asm |awk '{ print $2 } '` if [ $num ] then echo "database starting " fi if [ ! -n "$num" ] then echo "start fail" else echo "start sucessfully" fi } else echo "No parameter ,eg: ./stop_db.sh dbname" fi