通过脚本监控MySQL是否正常启动
关闭MySQL服务(也可以用systemctl命令关闭)
killall mysqld
systemctl start mysqld
看MySQL服务是否正常的两种方法
ps -ef | grep mysql
或
netstat -an | grep 3306
也可以通过登录MySQL账号
mysql -uroot -p密码 -e “select now()”判断$?是否为0,不为0启动服务
登录进去最准确,不过涉及密码保密问题
输出当前目录下的文件名及内容:
for i in ls ./;do echo "#########$i";cat $i;done
详细脚本:
第一种 根据mysql的端口号筛选出端口
#!/bin/bash
port =`netstat -an | grep 3306 | awk -F '[ :]+' '{ print$4}'` #[ :]+这个是正则表达式,+表示一个或多个,这里就表示一个或多个空格或冒号
if [ $port != '3306' ] ; then #不要用整数判断,要用字符串
`systemctl start mysqld`
fi
第二种 根据MySQL的端口号
#!/bin/bash
port= `netstat -an | grep 3306 | wc -l` #统计有无3306这个进程
if [ $port -ne 1 ]; then
`systemctl start mysqld`
fi
第三种根据MySQL的进程
#!/bin/bash
port=`ps -ef | grep mysql | grep -v grep | wc -l`
if [ $port -ne 2 ]; then
`systemctl start mysqld`
else
echo "mysql is already running"
fi
第四种(结合使用)
#! /bin/bash
db_process=`netstat -an| grep 3306 | wc -l`
db_port=`ps -ef | grep mysql | grep -v grep | wc -l`
if [ $db_port -eq 1 ] && [ $db_process -eq 1 ]
then
echo "mysql is already running"
else
`systemctl start mysqld`
fi