mysql 自动重启
1. 创建一个 cron-mysql.sh
文件,用于检查 mysql
进程是否运行,否则启动 mysql
:
#!/bin/bash
time=$(TZ=UTC-8 date "+%Y-%m-%d %H:%M:%S")
echo $time
RED='\e[1;91m' # 红
GREEN='\e[1;92m' # 绿
RES='\e[0m' # 清除颜色
# 进入当前脚本所在目录,防止找不到文件
script_dir=$(cd $(dirname $0);pwd)
cd $script_dir
count_mysql_process(){
# 获取 mysql 进程
mysql_pids=`ps -aux|grep "/mysqld" | awk '{print $2}'`
# awk print 实际上以逗号分隔,但在展示上会以空格分隔
# 转换为数组
mysql_arr=(`echo $mysql_pids | tr ',' ' '`)
# 进程数量
mysql_len=${#mysql_arr[@]}
return $mysql_len
}
count_mysql_process
mysql_len=$?
# 进程数量大于或等于2表示正在运行(其中一个是 grep 的)
if [ $mysql_len -ge 2 ];then
echo -e "MySQL ${GREEN} 运行中... ${RES}"
else
echo -e "MySQL ${RED} 未启动,正在重新启动... ${RES}"
sudo systemctl start mysql
count_mysql_process
mysql_len=$?
if [ $mysql_len -ge 2 ];then
echo -e "MySQL ${GREEN} 运行中... ${RES}"
else
echo -e "MySQL ${RED} 失败 ${RES}"
fi
fi
exit 0
2. 设置 crontab
:(此处每 10 分钟检查一次)
*/10 * * * * /bin/bash /your_path/cron-mysql.sh