Linux系统Shell编程—企业生产案例(一)

时间:2022-07-25
本文章向大家介绍Linux系统Shell编程—企业生产案例(一),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

企业案例

Linux系统Shell编程—企业生产案例(一)

企业数据库可以说是重点保护对象啊,没有之一,数据在当今企业里就是生命线,因此今天就来说一说,如何通过shell脚本来检查或监控MYSQL数据库服务是否正常??

01

通过端口判断

[root@mysql ~]# vi checkmysql.sh
#!/bin/sh
#create by mingongge at 2016-11-11
port=`netstat -lnt|grep 3306|wc -l`
if [ $port -ne 1 ];then
   echo "mysql is stop"
   /etc/init.d/mysqld start
else
   echo "mysql is starting"
fi
[root@mysql ~]# sh checkmysql.sh
mysql is starting
[root@mysql ~]# pkill mysqld
[root@mysql ~]# lsof -i :3306
[root@mysql ~]# sh checkmysql.sh
mysql is stop
Starting MySQL.                                 [  OK  ]
[root@mysql ~]# lsof -i :3306   
COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  1601 mysql   10u  IPv4  13690      0t0  TCP *:mysql (LISTEN)

02

通过进程与端口判断

[root@mysql ~]# ps -ef|grep mysql|grep -v grep|wc -l
2
[root@mysql ~]# vi checkmysql.sh
#!/bin/sh
#create by mingongge at 2016-11-11
if [[ port -eq 1 || porcess -eq 2 ]];then
     echo "mysql is starting"
else
     echo "mysql is stop"
     /etc/init.d/mysqld start

注:利用进程判断时,脚本的名称就不要包含有Mysql的字样了,否则就会产生判断不准确的情况出现

03

登陆数据库根据返回值判断

[root@mysql ~]# vi accessmysql.sh
#/bin/sh
mysql -uroot -pmysql123 -e "show databases;" >/dev/null 2>&1 

注:此处千万不要用直接登陆的写法mysql -uroot -pmysql123,否则会直接登陆了,不然执行下面的过程了

if [ $? -eq 0 ];then
     echo "mysql is starting"
else
     echo "mysql is stop"
     /etc/init.d/mysqld start
fi
[root@mysql ~]# sh accessmysql.sh
mysql is starting
[root@mysql ~]# pkill mysqld
[root@mysql ~]# sh accessmysql.sh
mysql is stop
Starting MySQL.                    [  OK  ]
[root@mysql ~]# sh accessmysql.sh
mysql is starting

监控MYSQL数据库是否异常的多种方法:

1、根据端口监控本地数据库

2、根据进程进行监控本地数据库

3、通过客户端命令及账号连接MYSQL,然后根据返回内容进行判断是否正常

4、通过PHP、JAVA程序URL方式进行监控(此种方式最佳,生产环境常用)

5、也可以通过以上方法综合利用