监控mysql状态, 发现宕后, 自动重启, 每秒检查一次。

check.sh

#!/bin/bash
while [ true ]; do
/bin/sleep 1
sh mysql_status.sh
done

chengkill

#!/bin/sh
#pid kill thread for chenglee
#if fileformat=dos, update fileformat=unix
#code:set fileformat=unix
#check:set ff ?
if [ $# -lt 1 ]
then
echo "not procedure_name"
exit 1
fi PROCESS=`ps -ef|grep $1|grep -v grep|grep -v PPID|awk '{ print $2}'`
for i in $PROCESS
do
echo "Kill the $1 process [ $i ]"
kill -9 $i
done

chengkill授执行权扔/usr/bin

mysql_status.sh

#!/bin/bash
#/usr/bin/nmap localhost | grep 3306
#lsof -i:3306
MYSQLPORT=`netstat -tlnp | grep "3306"|awk -F[:" "]+ '{print $4}'`
STR_TIME=$ date "+%Y-%m-%d %H:%M:%S" function checkMysqlStatus(){
/usr/bin/mysql -uroot -plizhenghua --connect_timeout=5 -e "show databases;" &>/dev/null 2>&1
if [ $? -ne 0 ]
then
restartMysqlService
if [ "$MYSQLPORT" == "3306" ];then
echo "mysql restart successful......"
else
echo "mysql restart failure......"
python mail.py
fi
else
echo "mysql is running..."
fi
} function restartMysqlService(){
cat code.txt
echo "测试重启mysql服务!"
echo "清除mysql残余!"
chengkill mysqld
echo "准备重启!"
service mysqld restart
echo "重启成功!"
# python mail.py
} if [ "$MYSQLPORT" == "3306" ]
then
checkMysqlStatus
else
restartMysqlService
fi

mail.py

#!/usr/bin/python
#-*- coding:utf-8 -*-
#Python Mail for chenglee
#if fileformat=dos, update fileformat=unix
#code:set fileformat=unix
#check:set ff ?
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr my_sender='11318@qq.com' # 发件人邮箱账号
my_pass = 'mwbajizijah' # 发件人邮箱密码(当时申请smtp给的口令)
my_user='14783@qq.com' # 收件人邮箱账号,我这边发送给自己
my_content='系统管理员您好,该系统的mysql进程已经崩溃并重启失败,请手动重启!!'
my_title='进程告警'
def mail():
ret=True
try:
msg=MIMEText(my_content,'plain','utf-8')
msg['From']=formataddr(["发件人昵称",my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号
msg['To']=formataddr(["收件人昵称",my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号
msg['Subject']=my_title # 邮件的主题,也可以说是标题 server=smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人邮箱中的SMTP服务器,端口是465
server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码
server.sendmail(my_sender,[my_user,],msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
server.quit()# 关闭连接
except Exception:# 如果 try 中的语句没有执行,则会执行下面的 ret=False
ret=False
return ret ret=mail()
if ret:
print("邮件发送成功")
else:
print("邮件发送失败")

code.txt

/
   /   /   /
   ____,____ /
  // |ヽヽ \  /
 ^^^^^|^^^^^^^
/   | ∩,,∩ /  /
    |(*(T)*)
 /  0と  )  /
     し─ J
chenglee

前后两个放在同一个目录, 中间chengkill扔bin, 然后守护模式运行check.sh。

最新文章

  1. IOS一些好的用户体验设置
  2. [转]AutoResetEvent 与 ManualResetEvent区别
  3. .Net魔法堂:AssemblyInfo.cs文件详解
  4. linux 下用户管理
  5. springMVC+hibernate构建项目
  6. Java 程序检查远程服务器状态
  7. cocos2d-x for wp8 设置横竖屏
  8. Java开源运行分析工具(转)
  9. Wix打包系列 (六)制作升级和补丁包
  10. iptables详解--转
  11. 【python基础】 Tkinter 之 几何管理器
  12. 表单的get和post使用情景
  13. Linux 链接详解(1)
  14. 请求库-selenium 模块
  15. JAVA获取计算机的IP、名称、操作系统等信息
  16. Python——正则表达式初步应用(一)
  17. java 线程 (三)线程并发的安全性 同步代码块
  18. js函数集
  19. 判断元素16种方法expected_conditions
  20. 设置多个ip ,实现ip欺骗

热门文章

  1. R安装package报ERROR: a 'NAMESPACE' file is required
  2. php实现记住密码下次自动登陆
  3. nginx: [error] invalid PID number "" in "/usr/local/webserver/nginx/logs/nginx.pid" (原)
  4. Container(容器)与 Injector(注入)
  5. npm 安装React Devtools调试工具
  6. c# Mongodb创建自增列
  7. 在运行create_list.sh时候报错:AttributeError: 'module' object has no attribute 'LabelMap'
  8. django admin 处理文本换行空格
  9. spring 的核心类JdbcTemplate 方法
  10. Permutation Bo (数学证明)