• Shell脚本检查memcache进程并自己主动重新启动


    修正版:

    #!/bin/sh
    #check memcache process and restart if down

    mm_bin="/usr/local/bin/memcached"
    mm_log="/home/xxx/memcached_check.log"
    mm_ports=("11211" "11212")
    mm_param=("-d -m 20480 -p 11211 -u www" "-d -m 256 -p 11212 -u www")
    mm_count=${#mm_ports[@]}

    t=$(date -d "today" +"%Y-%m-%d %H:%M:%S")
    i=0
    while [ $i -lt $mm_count ]
    do
    mm_exists=`ps -ef|grep "memcached"|grep "${mm_ports[$i]}"|grep -v grep|wc -l`

    if [ "$mm_exists" == "0" ]; then
    ${mm_bin} ${mm_param[$i]} 2>&1 > /dev/null &
    echo "${t} : ${mm_bin} ${mm_param[$i]}" >> ${mm_log}
    fi

    let i++
    done

    ===============================================================

    加入为自己主动运行:
        #crontab -e
    */10 * * * * /bin/sh /home/xxx/memcached_check.sh


    系统每10分钟会自己主动运行memcached_check.sh

    -------------------------------------------------------------
    备用shell语句:

    #检查mysql状态
    PORT=`netstat -na | grep "LISTEN" | grep "3306" | awk '{print $4}' | awk -F. '{print $2}'`
    if [ "$PORT" -eq "3306" ]

    #检查mysql占CPU负载
    mysql_cpu=`top -U root -b -n 1 | grep mysql | awk '{print $10}'|awk -F. '{print $1}'`
    #假设mysql cpu负载大于80,则重新启动mysql
    if [ "$mysql_cpu" -ge "80" ]

    #获得相关信息
    ps -ef|grep "memcached"|grep -v "grep"|wc -l
    ps -ef|grep "memcached"|grep "11211"|grep -v "grep"|wc -l
    ps aux|grep "memcached"|grep -v "grep"|awk '{sum+=$4;n++};END{print sum}'
    ps aux|grep "memcached"|grep -v "grep"|awk '{printf $1}'

    MYPORT=`netstat -na|grep "tcp"|grep "3306"|awk -F[:" "]+ '{print $5}'`
    HAPORT=`netstat -na|grep "udp"|grep "694"|awk -F[:" "]+ '{print $5}'`
    PING=`ping -c 5 www.linuxtone.org|awk -F, '/packets/{print $3}'|cut -c 2-|awk '{print $1}'`
    DB1IP=`ifconfig eth0|awk '/inet/{print $2}'|cut -c 6-`

    ----------------------------------------------------------------------------
    shell if语句的一些资料:
    –b 当file存在而且是块文件时返回真
    -c 当file存在而且是字符文件时返回真
    -d 当pathname存在而且是一个文件夹时返回真
    -e 当pathname指定的文件或文件夹存在时返回真
    -f 当file存在而且是正规文件时返回真
    -g 当由pathname指定的文件或文件夹存在而且设置了SGID位时返回为真
    -h 当file存在而且是符号链接文件时返回真,该选项在一些老系统上无效
    -k 当由pathname指定的文件或文件夹存在而且设置了“粘滞”位时返回真
    -p 当file存在而且是命令管道时返回为真
    -r 当由pathname指定的文件或文件夹存在而且可读时返回为真
    -s 当file存在文件大小大于0时返回真
    -u 当由pathname指定的文件或文件夹存在而且设置了SUID位时返回真
    -w 当由pathname指定的文件或文件夹存在而且可运行时返回真。一个文件夹为了它的内容被訪问必定是可运行的。
    -o 当由pathname指定的文件或文件夹存在而且被子当前进程的有效用户ID所指定的用户拥有时返回真。



    UNIX Shell 里面比較字符写法:
    -eq 等于
    -ne 不等于
    -gt 大于
    -lt 小于
    -le 小于等于
    -ge 大于等于
    -z 空串
    = 两个字符相等
    != 两个字符不等
    -n 非空串

    ------------------------------------------------------------
    crontab 的一些资料:

    基本格式:
    *  *  *  *  *  command
    分  时 日  月  周  命令


    第1列表示分钟1~59 每分钟用 * 或 */1 表示,*/10表示每10分钟
    第2列表示小时1~23(0表示0点)
    第3列表示日期1~31
    第4列表示月份1~12
    第5列标识号星期0~6(0表示星期天)

  • 相关阅读:
    Android 5.X新特性之RecyclerView基本解析及无限复用
    Android 网络框架之Retrofit2使用详解及从源码中解析原理
    Android 源码解析之AsyncTask
    Business Logic
    WHO AM I
    黑洞
    俄罗斯方块
    还记得八皇后的解法吗
    汝之蜜糖,吾之砒霜
    项目为什么会失败
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5096025.html
Copyright © 2020-2023  润新知