黑帽联盟

 找回密码
 会员注册
查看: 1942|回复: 0

[基础服务] 全自动监控Mysql服务脚本-定位原创

[复制链接]

302

主题

18

听众

1008

积分

管理员

Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    开心
    2026-7-7 22:30
  • 签到天数: 406 天

    [LV.9]以坛为家II

    一种:(主要通过awk命令过滤3306端口号)

    #/bin/bash

    #owner:created by dingwei
    #time:2016-11-04
    #mail:1074189538@qq.com
    #func:mysql service is started

    #定义一个变量用来接收端口号
    PORT=`netstat -lnt | grep 3306 | awk -F '[ :]+' '{print $5}'`

    #判断该变量是否是3306端口号
    if [ "$PORT" == "3306" ]
            then
             echo "mysql service has started"
    else
             echo `service mysql start`
    fi

    1.png


    第二种:(主要通过wc命令过滤)


    #/bin/bash

    #owner:created by dingwei
    #time:2016-11-14
    #mail:1074189538@qq.com
    #func:mysql service is started
    #version:2.0

    #定义一个变量用来接收端口号
    portNUM=`netstat -lnt | grep 3306 | wc -l`

    #判断该变量是否是3306端口号
    if [ $portNUM -eq 1 ]
            then
             echo "mysql service has started"
    else
             echo `service mysql start`
    fi

    mysql服务脚本

    mysql服务脚本


    第三种:比较精确(主要通过判断端口号3306和进程号mysqld是否都是存在)


    #/bin/bash

    #owner:created by dingwei
    #time:2016-11-14
    #mail:1074189538@qq.com
    #func:mysql service is started
    #version:3.0

    #只有在端口号和进程号都存在的情况下,才算mysql服务正常启动
    #定义一个变量用来接收端口号
    portNUM=`netstat -lnt | grep 3306 | wc -l`
    mysqlProcessNum=`ps -ef | grep mysqld | grep -v grep |wc -l`

    #判断该变量是否是3306端口号
    if [ $portNUM -eq 1 -a $mysqlProcessNum -eq 2 ];then
            echo "mysql service has started"
    else
            /etc/init.d/mysql start
    fi

    mysql脚本

    mysql脚本


    第四种:最精确完美(在第三种的基础上,为了防止mysql服务无法启动,进行了一些条件判断)


    #/bin/bash

    #owner:created by dingwei
    #time:2016-11-14 /etc/init.d/mysql
    #mail:1074189538@qq.com
    #func:mysql service is started
    #version:4.0

    #只有在端口号和进程号都存在的情况下,才算mysql服务正常启动,为了防止启动mysql服务
    #失败,给予相应的处理

    #定义一个变量用来接收端口号
    MYSQL=/etc/init.d/mysql
    LogPath=/tmp/mysql.log
    portNUM=`netstat -lnt | grep 3306 | wc -l`
    mysqlProcessNum=`ps -ef | grep mysqld | grep -v grep |wc -l`

    #判断该变量是否是3306端口号
    if [ $portNUM -eq 1 -a $mysqlProcessNum -eq 2 ];then
            echo "mysql service has started"
    else
            $MYSQL start >$LogPath
            sleep 10
            mysqlProcessNum=`ps -ef | grep mysqld | grep -v grep |wc -l`
            if [ $portNUM -ne 1 -a $mysqlProcessNum -ne 2 ];then
            while true
            do
                    killall mysqld >/dev/null 2>&1
                    [ $? -ne 0 ] && break
            done
            $MYSQL start >>$LogPath && status="successfully" || status="failure"
            mail -s "mysql startup status is $status" 1074189538@qq.com <$LogPath
            fi
    fi

    linux脚本

    linux脚本
    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部