当前位置: > shell编程 >

监控memcached进程启动与否的shell脚本

时间:2014-11-23 14:04来源:linux.it.net.cn 作者:IT

一例用于监控memcached进程是否启动的shell脚本,用于memcache的启动、停止与重启等操作。


1,memcached_inc.sh 设置路径,端口等讯息。
代码:
 

复制代码代码示例:
#!/bin/sh  
  
#config include  
  
HOST=$(hostname)  
SITE="mysite"  
PORT=11211  
  
MEMCACHED_PID_FILE="/tmp/memcached.pid"  
MEMCACHED_DAEMON_PID_FILE="/tmp/memcached_daemon.pid"  
  
MEMCACHED="memcached -d -m 64 -p $PORT -u memcache -l 127.0.0.1 -P $MEMCACHED_PID_FILE"  
MEMCACHED_DAEMON_FILE="memcached_daemon.sh"  
  
ERROR_LOG_FILE="${ROOT}/memcached_${SITE}_${HOST}_${PORT}.log" 

2,gm_memcached.sh 控制memcached 启动,停止,重启。
 

复制代码代码示例:

#!/bin/sh  
# site: www.jbxue.com  
#memcached start and stop  
#$1 action  
  
ROOT=$(cd "$(dirname "$0")"; pwd)  
. ${ROOT}/memcached_inc.sh  
  
start() {  
    if [ -f "$MEMCACHED_PID_FILE" ] && [ -s "$MEMCACHED_PID_FILE" ]; then  
        printf "memcached already running\n"  
    else  
        printf "starting memcached\n"  
        $MEMCACHED  
  
        sleep 2  
  
        PID=$(cat $MEMCACHED_PID_FILE)  
        printf "memcached is started PID:$PID\n"  
  
        printf "starting memcached daemon\n"  
        ${ROOT}/${MEMCACHED_DAEMON_FILE} &  
        DAEMON_PID=$!  
        echo ${DAEMON_PID} > ${MEMCACHED_DAEMON_PID_FILE}  
        printf "memcached daemon is started PID:${DAEMON_PID}\n"  
    fi
}  
  
stop() {  
    if [ -f "$MEMCACHED_DAEMON_PID_FILE" ] && [ -s "$MEMCACHED_DAEMON_PID_FILE" ]; then  
        DAEMON_PID=$(cat $MEMCACHED_DAEMON_PID_FILE)  
        rm -f ${MEMCACHED_DAEMON_PID_FILE}  
        if [ ! -z ${DAEMON_PID} ]; then  
            kill -9 ${DAEMON_PID}  
        fi  
        printf "memcached daemon is stopped\n"  
    else  
        printf "no memcached daemon running\n"  
    fi  
  
    sleep 1  
  
    if [ -f "$MEMCACHED_PID_FILE" ] && [ -s "$MEMCACHED_PID_FILE" ]; then  
        PID=$(cat $MEMCACHED_PID_FILE)  
        rm -f ${MEMCACHED_PID_FILE}  
        if [ ! -z ${PID} ]; then  
            kill -9 ${PID}  
        fi  
        printf "memcached is stopped\n"  
    else  
        printf "no memcached running\n"  
    fi

case "$1" in  
    start)  
        start  
        ;;  
    stop)  
        stop  
        ;;  
    restart)  
        stop  
        sleep 3  
        start  
        ;;  
    *)  
        printf "Usage:$0 {start|stop|restart}\n"  
        exit 1
esac
exit 0 

3,memcached_daemon.sh 监控memcached 进程,如进程失效则自动启动。
代码:
 

复制代码代码示例:
#!/bin/sh  
#site; www.jbxue.com
#memcached daemon  
  
ROOT=$(cd "$(dirname "$0")"; pwd)  
  
. ${ROOT}/memcached_inc.sh  
  
while :  
do  
    if [ -f "$MEMCACHED_PID_FILE" ] && [ -s "$MEMCACHED_PID_FILE" ]; then  
        PID=$(cat $MEMCACHED_PID_FILE)  
    else  
        PID=""  
    fi  
     
    if [ -z "$PID" ] || [ -z $(ps aux|awk '{print $2}' | grep "^$PID$") ]; then  
        $MEMCACHED  
        sleep 1  
        printf "[$(date +%Y-%m-%d' '%H:%M:%S)] ${SITE} ${HOST} memcached ${PORT} is restarted\n" >> $ERROR_LOG_FILE  
        echo "Subject: ${SITE} ${HOST} memcached ${PORT} is restarted $(date +%Y-%m-%d' '%H:%M:%S)" | sendmail me@gmail.com  
    fi  
    sleep 5  
done  
exit 0 

调用方法:
 

复制代码代码示例:
./gm_memcached.sh start   #启动memcached  
./gm_memcached.sh stop    #停止memcached  
./gm_memcached.sh restart #重启memcached

(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容