黑帽联盟

 找回密码
 会员注册
查看: 1110|回复: 0
打印 上一主题 下一主题

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

[复制链接]

293

主题

18

听众

955

积分

管理员

Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    奋斗
    2023-10-26 13:13
  • 签到天数: 358 天

    [LV.8]以坛为家I

    一种:(主要通过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服务脚本

    第三种:比较精确(主要通过判断端口号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服务无法启动,进行了一些条件判断)


    #/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脚本
    帖子永久地址: 

    黑帽联盟 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与黑帽联盟享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和黑帽联盟的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、黑帽联盟管理员和版主有权不事先通知发贴者而删除本文

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

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