我们新增Dark Mode(暗模式),(只是在晚上)可以改变MAC OS&Windows系统的暗模式实现切换;安卓和苹果手机是一样的。
日志随笔

Linux shell脚本实现检测mysql状态,挂掉立即自动重启

gyue2345·2017-08-09·171 次阅读··

   2017-08-09 23:57 LJY2345    抢沙发   隐藏边栏   黑色模式    171 
   评分 0 次,平均分 0.0    抢沙发   隐藏边栏   黑色模式

mysql_listen.sh:

#!/bin/bash
pgrep -x mysql &> /dev/null
if [ $? -ne 0 ]
then
echo "At time: `date` :MySQL  is stop .">> /var/log/mysql_messages
service mysql start
#echo "At time: `date` :MySQL server is stop."
else
echo "MySQL server is running ."
fi

 

该脚本实现监测mysql的状态,如果发现mysql停止,则自动启动,并填写停止时间


我认为还有一种更好的方式,不同与原作者

我使用的是wdcp面板使用上面的代码会无法读取到日志,所以就使用了检测pgrep mysqld的方法。

#!/bin/bash
pgrep mysqld &> /dev/null
if [ $? -gt 0 ]
then
echo "`date` mysql is stop"
service mysql start
else
echo "`date` mysql running"
fi

使用 pgrep mysqld 监测mysqld服务的运行状态,其中&> /dev/null 是将其结果输出到空文件,也就是不保存输出信息

$? 是拿到上一条命令的运行结果,-gt 0 是判断是否大于0,后面则是输出时间到日志文件,然后启动mysql,否则不启动mysql

我的测试步骤如下:

[[email protected] ~]# pgrep mysql
3375
3924
[[email protected] ~]# pgrep mysqld &> /dev/null
[[email protected] ~]# if [ $? -gt 0 ]
> then
> echo "`date` mysql is stop"
> service mysql start
> else
> echo "`date` mysql running"
> fi
Fri Aug 11 13:38:20 CST 2017 mysql running
[[email protected] ~]# /www/sh/mysql.sh
-bash: /www/sh/mysql.sh: Permission denied
[[email protected] ~]# /www/sh/mysql.sh
Fri Aug 11 13:41:05 CST 2017 mysql running
[[email protected] ~]# service mysql stop
Redirecting to /bin/systemctl stop mysql.service
[[email protected] ~]# /www/sh/mysql.sh
Fri Aug 11 13:41:43 CST 2017 mysql is stop
Redirecting to /bin/systemctl start mysql.service
[[email protected] ~]#

出现Permission denied的原因是mysql.sh权限问题,把其设置为0777即可。

日志输出

#!/bin/bash
pgrep mysqld &> /dev/null
if [ $? -gt 0 ]
then
echo "`date` mysql is stop" >> /var/log/mysql_listen.log
service mysql start
else
echo "`date` mysql running" >> /var/log/mysql_listen.log
fi

即每执行一次脚本,输出结果都会被保存到 /var/log/mysql_listen.log 中

同理:我们可以实现nginx的停止自动重启

pgrep mysql &> /dev/null

只需要把mysql改为nginx即可

[[email protected] ~]# pgrep nginx
15788
15789
15791
15792
[[email protected] ~]# service nginxd stop
Stopping nginxd (via systemctl):                           [  OK  ]
[[email protected] ~]# pgrep nginx
[[email protected] ~]# #!/bin/bash
[[email protected] ~]# pgrep nginx &> /dev/null
[[email protected] ~]# if [ $? -gt 0 ]
> then
> echo "`date` nginx is stop"
> service nginxd start
> else
> echo "`date` nginx running"
> fi
Sat Aug 12 14:44:06 CST 2017 nginx is stop
Starting nginxd (via systemctl):                           [  OK  ]
[[email protected] ~]# 

 

二 使脚本每隔一定的时间自动运行

linux上定期执行脚本用的是cron进程

命令:

crontab -e
#第一次使用cron,得用序号选择编辑器

 

在最后一行加入:

5 * * * * /www/sh/mysql.sh

*/5表示分钟能被5整除,及每5分钟执行一次,后面4个*号,分别表示 小时,日,月,星期。

保存后退出。

重启cron就可以了

service cron restart

这样就会每隔5分钟,执行一次检测mysql的脚本。

原文链接:

http://www.embbnux.com/2014/07/08/shell_listen_mysq_auto_restart/

赞赏

历史上的文章

  

除特别注明外,本站文章均采用BY-NC-SA协议授权,转载请注明来自:http://www.embbnux.com/2014/07/08/shell_listen_mysq_auto_restart/

博 主作者: 关注:6    粉丝:1最后编辑于:2022年9月1日
LJY IT BLOG的站长。

扫一扫打赏

支付宝扫一扫打赏

微信扫一扫打赏

view comments - NOTHING
🌙
😃

切换注册
忘记密码 ?

×

您也可以使用第三方帐号快捷登录

切换登录

×
扫一扫二维码分享
下载海报
  切换主题 | SCHEME TOOL