这几天帮帮朋友的服务器安装环境,为了他将来维护方便,就安装了一个宝塔面板,但还是出现了MySQL进程经常停止的问题,解决方法就是SWAP+计划任务。
宝塔计划任务可以执行SHELL脚本,这就很方便了,网上虽然很多代码,但第一没有注释,第二对于不懂代码的人,有些功能是有点多余的
注意:服务器采用的centos 7.x
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
pgrep -x mysqld &> /dev/null
if [ $? -ne 0 ]
then
/etc/init.d/mysqld start
exit
fi
具体使用图例
后台 → 计划任务
下面为注释
#!/bin/bash
#上面的第一行是声明程序执行路径的,并不完全代表注释
#将变量路径加入系统环境变量,先定义一下路径,然后用export声明一下路径
#这里要注意一下UNIX类系统环境变量中路径分隔用冒号,不是分号。
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
#通过进程名称来查询程序是否在运行,命令详解,详见附录1
#命令行中的&> 代表标准输出和标准错误输出都重定向到/dev/null
#至于/dev/null,是linux里俗称的“黑洞”,为了让这个命令行执行后不留痕迹
pgrep -x mysqld &> /dev/null
#下面的if就不多解释了,简单了解过任何编程逻辑的都能看懂,-ne标示不等于
#至于&?,在Shell里有$0, $#, $*, $@, $?, $$等形式,具体建议百度下
if [ $? -ne 0 ]
then
#执行MySQL服务启动命令
/etc/init.d/mysqld start
#加一个退出当前进程
exit
#至于这个fi,是shell里的end if,哈哈
fi
解读完成,本文发自2021-2-7。有说的不好的地方或者因为若干年后迭代导致代码变更,麻烦给我发邮件我进行更新(超强求生欲,哈哈)
继续阅读Shell判断MySQL进程