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

发布时间:2019-07-30编辑:脚本学堂
分享一例用于监控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.jb200.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 runningn" 
    else 
        printf "starting memcachedn" 
        $MEMCACHED 
 
        sleep 2 
 
        PID=$(cat $MEMCACHED_PID_FILE) 
        printf "memcached is started PID:$PIDn" 
 
        printf "starting memcached daemonn" 
        ${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 stoppedn" 
    else 
        printf "no memcached daemon runningn" 
    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 stoppedn" 
    else 
        printf "no memcached runningn" 
    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.jb200.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|linuxjishu/13830.html target=_blank class=infotextkey>awk '{print $2}' | grep "^$PID$") ]; then 
        $MEMCACHED 
        sleep 1 
        printf "[$(date +%Y-%m-%d' '%H:%M:%S)] ${SITE} ${HOST} memcached ${PORT} is restartedn" >> $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