在服务器运行的过程中难免有某些服务挂掉的情况,例如mysql、tomcat等,这时需要有定时脚本去检查它们的状态,增加系统的健康状况。当有多个不同的服务挂在不同的服务器上时,一键检查也需要一步完成。这里以mysql为例,通过一台服务器控制另一台服务器上的mysql服务状态的检查。
以hadoop101为主服务器控制hadoop100上的mysql服务启停,在hadoop101上命名listen_main.sh文件,将以下写入listen_main.sh
#!/bin/bash
mysqlIP=hadoop100
rsync /home/huzee/Desktop/mysql_listen.sh root@${mysqlIP}:/root/
ssh root@${mysqlIP} "/bin/bash /root/mysql_listen.sh"
echo "${mysqlIP} is done"
echo "#######################"
同样,在运行着mysql服务的服务器hadoop100上创建mysql_listen.sh写入以下内容
#!/bin/bash
# 获取mysql进程ID
mysqlID=$(ps -ef | grep mysqld | grep -v "grep"|awk '{print $2}')
# 判断进程是否存在
if [[ $mysqlID ]]; then
# 操作数据库
/usr/bin/mysql -e "
create database if not exists TT;
use TT;
create table if not exists aa(uname varchar(10),uage int(3));
insert into aa values('Huzee',18);
drop database TT;
quit"
# 上述sql命令执行状态
FLAG=$?
if [ ${FLAG} == 0 ];then
echo "MYSQL is running"
else
echo "At time: `date` :MYSQL server ERROR:insert data failed">>/home/huzee/Desktop/mysql_logs
service mysqld restart
fi
else
echo "At time: `date` :MYSQL server is stoped">>/home/huzee/Desktop/mysql_logs
service mysqld start
fi
运行主服务器上的listen_main.sh,mysql_main.sh的目的是将本地的mysql_listen.sh文件同步到mysql服务的服务器上(hadoop100),并远程执行hadoop100上的mysql_listen.sh文件。
将mysql服务器停止,再试试listen_main.sh
检查到hadoop100上的mysql服务停止,并重新启动了mysql服务