添加重启后执行任务
crontab -e
加入
@reboot nohup sh /root/scripts/init.sh &

编辑init.sh内容

#!/bin/bash
#导入jre必须手动导入 不然启动不了(巨坑)
export JAVA_HOME=/app/jdk1.8.0_211
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATHecho 'init...'
systemctl stop firewalld.service
sleep 5
nohup sh /root/scripts/startup.sh &
sleep 5
nohup sh /root/scripts/startupApollo.sh>>/root/scripts/apollo.log &
echo 'init success'

startup.init控制mysql和主主模式配置并监控mysql服务

#author by xiaokai 2019-07-31
#启动另外一个脚本
#count=`ps -ef | grep demo1.sh | grep -v "grep" | wc -l`
#echo $count
#sh demo1.sh>demo1.log &while true
do
sleep 5
count=`ps -ef | grep mysql | grep -v "grep" | wc -l`
#echo $count
if [ 0 == $count ]; then#进程不存在time2=$(date "+%Y-%m-%d %H:%M:%S")# echo "mysql服务宕机,正在重新启动"echo 'mysql服务宕机,宕机时间为:'$time2>>error.logsleep 2service mysqld restartsleep 15sh setMysql.shsleep 5    echo 'mysql重新启动成功!!!'
#else#rest进程存在,杀掉进程# echo "mysql服务运行正常...持续监控中"
fi
# time=$(date "+%Y-%m-%d %H:%M:%S")
# echo "本轮监测完毕,当前时间为:"$time
done

startupApollo.sh 开机启动apollo并监控apollo服务(支持自动重启)

#!/bin/bash
#author by xiaokai 2019-07-31
#自动重启apollo服务脚本
#count=`ps -ef | grep demo1.sh | grep -v "grep" | wc -l`
#echo $count
#sh demo1.sh>demo1.log &
export JAVA_HOME=/app/jdk1.8.0_211
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATHwhile true
do
sleep 5
count=`ps -ef | grep 10010 | grep -v "grep" | wc -l`
#echo $count
if [ 0 == $count ]; then#进程不存在time2=$(date "+%Y-%m-%d %H:%M:%S")# echo "mysql服务宕机,正在重新启动"echo 'apolloadmin服务宕机,宕机时间为:'$time2>>error.logsleep 5sh /app/apolloadmin/scripts/startup.sh>>apollo.log sleep 5    echo 'apolloadmin重新启动成功!!!'
fi#检测apolloconfig进程
sleep 1
count2=`ps -ef | grep 10020 | grep -v "grep" | wc -l`
#echo $count
if [ 0 == $count2 ]; then#进程不存在time2=$(date "+%Y-%m-%d %H:%M:%S")echo 'apolloconfig服务宕机,宕机时间为:'$time2>>error.logsleep 5sh /app/apolloconfig/scripts/startup.sh>>apollo.logsleep 5echo 'apolloconfig重新启动成功!!!'
fi#检测apollopor进程
sleep 1
count3=`ps -ef | grep 10030 | grep -v "grep" | wc -l`
#echo $count
if [ 0 == $count3 ]; then#进程不存在time2=$(date "+%Y-%m-%d %H:%M:%S")# echo "mysql服务宕机,正在重新启动"echo 'apolloportal服务宕机,宕机时间为:'$time2>>error.logsleep 5sh /app/apolloportal/scripts/startup.sh>>apollo.logsleep 5echo 'apolloportal重新启动成功!!!'
fi#检测haproxy进程
count3=`ps -ef | grep haproxy | grep -v "grep" | wc -l`
#echo $count
if [ 0 == $count3 ]; then#进程不存在time2=$(date "+%Y-%m-%d %H:%M:%S")# echo "haproxy服务宕机,正在重新启动"echo 'haproxy服务宕机,宕机时间为:'$time2>>error.logsleep 2/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cnfsleep 5echo 'haproxy重新启动成功!!!'
fidone

setmysql.sh 配置mysql 主主模式脚本

#!/bin/bash
#author by xiaokai 2019-07-29
#-*- coding:utf-8 -*-#重启数据库
#echo 'restart mysql1 node...'
#docker restart mysql1
#echo 'restart mysql2 node...'
#docker restart mysql2echo -e "\e[1;34m connect mysql node1... \n"
echo 'connect mysql node1...'
#数据库ip
HOSTNAME1="172.26.2.114"
#数据库端口
PORT1="3306"
#数据库用户名
USERNAME1="xiaokai"
#数据库密码
PASSWORD1="123456"
#数据库名
DBNAME1="mysql"
#查询语句
select_sql="show master status"
#*#执行查询*
result1=`mysql -h${HOSTNAME1}  -P${PORT1}  -u${USERNAME1} -p${PASSWORD1} ${DBNAME1} -Bse "${select_sql}"`
node1_file_position=`echo ${result1} | awk '{print $1}'` #获取到的第一个值
node1_Postion=`echo ${result1} | awk '{print $2}'` #获取到的第二个值
node1_comtend=`echo ${result1} | awk '{print $n}'` #获取到的第N个值echo 'node1_file_position:'$node1_file_position
echo 'node1_Postion:'$node1_Postion
echo 'node1_comtend:'$node1_comtendecho '***************************'
echo 'connect mysql node2...'
#数据库ip
HOSTNAME2="172.26.2.115"
#数据库端口
PORT2="3306"
#数据库用户名
USERNAME2="xiaokai"
#数据库密码
PASSWORD2="123456"
#数据库名
DBNAME2="mysql"
#查询语句
select_sql="show master status"
#*#执行查询*
result2=`mysql -h${HOSTNAME2}  -P${PORT2}  -u${USERNAME2} -p${PASSWORD2} ${DBNAME2} -Bse "${select_sql}"`node2_file_position=`echo ${result2} | awk '{print $1}'` #获取到的第一个值
node2_Postion=`echo ${result2} | awk '{print $2}'` #获取到的第二个值
node2_comtend=`echo ${result2} | awk '{print $n}'` #获取到的第N个值echo 'node2_file_position:'$node2_file_position
echo 'node2_Postion:'$node2_Postion
echo 'node2_comtend:'$node2_comtend#创建同步帐号并授权
create_acount_sql="create user 'xiaokai'@'%' identified by '123456"
`mysql -h${HOSTNAME1}  -P${PORT1}  -u${USERNAME1} -p${PASSWORD1} ${DBNAME1} -Bse "${create_acount_sql}"`
grant_acount_sql="grant all on *.* to 'xiaokai'@'%' identified by '123456'"
`mysql -h${HOSTNAME1}  -P${PORT1}  -u${USERNAME1} -p${PASSWORD1} ${DBNAME1} -Bse "${grant_acount_sql}"``mysql -h${HOSTNAME2}  -P${PORT2}  -u${USERNAME2} -p${PASSWORD2} ${DBNAME2} -Bse "${create_acount_sql}"`
`mysql -h${HOSTNAME2}  -P${PORT2}  -u${USERNAME2} -p${PASSWORD2} ${DBNAME2} -Bse "${grant_acount_sql}"`echo '同步帐号授权完毕'#配置从节点写入
stop_slave_sql="stop slave"
`mysql -h${HOSTNAME1}  -P${PORT1}  -u${USERNAME1} -p${PASSWORD1} ${DBNAME1} -Bse "${stop_slave_sql}"`
`mysql -h${HOSTNAME2}  -P${PORT2}  -u${USERNAME2} -p${PASSWORD2} ${DBNAME2} -Bse "${stop_slave_sql}"`
#配置node1
change_master_node1="CHANGE MASTER TO MASTER_HOST='${HOSTNAME1}',MASTER_PORT=${PORT1},MASTER_USER='${USERNAME1}',MASTER_PASSWORD='${PASSWORD1}',MASTER_LOG_FILE='${node1_file_position}',MASTER_LOG_POS=${node1_Postion}"
change_master_node2="CHANGE MASTER TO MASTER_HOST='${HOSTNAME2}',MASTER_PORT=${PORT2},MASTER_USER='${USERNAME2}',MASTER_PASSWORD='${PASSWORD2}',MASTER_LOG_FILE='${node2_file_position}',MASTER_LOG_POS=${node2_Postion}"echo ${change_master_node1}
echo ${change_master_node2}echo '==============================================='
start_slave_sql="start slave"`mysql -h${HOSTNAME2}  -P${PORT2}  -u${USERNAME2} -p${PASSWORD2} ${DBNAME2} -Bse "${change_master_node1}"`
sleep 1s
`mysql -h${HOSTNAME2}  -P${PORT2}  -u${USERNAME2} -p${PASSWORD2} ${DBNAME2} -Bse "${start_slave_sql}"`
sleep 1s
`mysql -h${HOSTNAME1}  -P${PORT1}  -u${USERNAME1} -p${PASSWORD1} ${DBNAME1} -Bse "${change_master_node2}"`
sleep 1s
`mysql -h${HOSTNAME1}  -P${PORT1}  -u${USERNAME1} -p${PASSWORD1} ${DBNAME1} -Bse "${start_slave_sql}"`#回调slave状态
show_slave_sql="show slave status"
slave1_status=`mysql -h${HOSTNAME1}  -P${PORT1}  -u${USERNAME1} -p${PASSWORD1} ${DBNAME1} -Bse "${show_slave_sql}"`
slave_node1_status=`echo ${slave1_status} | awk '{print $n}'`
echo 'node1:'${slave_node1_status}
echo '执行完毕'echo -e '\e[0m'
#查询语句
#select_sql2='select now()'
#dateResult=`mysql -h${HOSTNAME}  -P${PORT}  -u${USERNAME} -p${PASSWORD} ${DBNAME} -Bse "${select_sql2}"`
#time2=`echo ${dateResult}|awk '{print $n}'`
#echo 'time:'$time2

99.Shell脚本自启程序并监控(实现全自动监控服务)相关推荐

  1. 使用shell脚本对Linux系统和进程资源进行监控

    今天发现一个网站,快课网,感觉还不错,里面有编程,面试,算法等等相关内容. 链接如下:http://www.cricode.com/ 首页便看到这篇文章,正好对Linux和shell等持续关注,转载学 ...

  2. 使用 shell 脚本对 Linux 系统和进程资源进行监控

    Shell 简介 Shell 语言对于接触 LINUX 的人来说都比较熟悉,它是系统的用户界面,提供了用户与内核进行交互操作的一种接口.它接收用户输入的命令并把它送入内核去执行.实际上 Shell 是 ...

  3. 通用Shell脚本,可以优雅的启动/关闭/重启/JAVA服务

    shell脚本 service.sh,如果没有脚本执行权限先使用 chmod 777 service.sh 附加权限. sh service.sh start            启动服务 sh s ...

  4. Shell脚本实现自动检测/配置/开启/关闭redis后台服务

    [参考小例] 注意:Linux安装redis和部署(参考) 该脚本包含以下4点: 检查redis的后台启动配置. 检查当前redis运行状态. 如果redis未启动,则启动redis后台服务.如果re ...

  5. 101个shell脚本

    转自:https://blog.51cto.com/zero01/2046242 101个shell脚本 本文用于记录学习和日常中使用过的shell脚本 [脚本1]打印形状 打印等腰三角形.直角三角形 ...

  6. shell脚本常用方法

    常用shell脚本 [脚本1]打印形状 打印等腰三角形.直角三角形.倒直角三角形.菱形 #!/bin/bash # 等腰三角形 read -p "Please input the lengt ...

  7. 100多个shell脚本的例子

    本文用于记录学习和日常中使用过的shell脚本 [脚本1]打印形状 打印等腰三角形.直角三角形.倒直角三角形.菱形 等腰三角形 #!/bin/bash read -p "Please inp ...

  8. 一起来了解Shell脚本

    目录 一.Shell脚本概述 1.1.Shell脚本的概念 1.2.Shell脚本应用场景 1.3.Shell的作用--命令解释器,"翻译官" 1.4.用户的登录Shell 二.S ...

  9. shell脚本详解(一)——Shell编程规范与变量

    详解Shell编程规范与变量 一.Shell脚本概述 1.shell脚本的概念 2.shell脚本应用场景 3.shell的作用--命令翻译器,"翻译官" 二.用户的登录shell ...

最新文章

  1. 详解CPU漏洞对机器学习的影响:几乎所有卷积层都受影响,QR分解降速37%
  2. android输出log,Android开发 Release情况下也能输出log
  3. Three.js学习笔记 – “我和小伙伴都惊呆了”的特效和Three.js初探
  4. 测试人员面临的测试挑战和必备技能
  5. 如何到SAP官网上查询某产品的roadmap - 路线图
  6. excel 时间戳_我没有Excel基础,可以学Power BI吗
  7. laravel 分词搜索匹配度_elasticsearch基础笔记9-elasticsearch 词项全文搜索
  8. 工程数学(数值分析)第五讲:数据拟合
  9. NUC1003 Hangover【数学计算+水题】
  10. python requests 上传文件_Python 实现小程序云存储文件上传
  11. 花花省淘宝客APP源码带淘宝京东拼多多唯品会优惠券自营商城本地生活CPS外卖优惠电影票话费
  12. 【解决方案】视频结构化图像智能分析系统EasyNVR助力KTV视频监控建设
  13. Java 导出Excel 自定义模板
  14. java 获取拼音_Java获取汉字对应的拼音(全拼或首字母)
  15. 如何利用Excel公式制作日历
  16. 电磁兼容学习-电磁干扰三要素
  17. 英语口语html5源码,5篇英语经典美文赏析,可以当口语练习素材哦
  18. Excel 图表与数据透视表制作
  19. Sqlserver 中的Iif语句
  20. VS2010播放.WAW音频文件

热门文章

  1. boost::system::error_condition相关的测试程序
  2. boost::parameter::aux::maybe相关的测试程序
  3. boost::integer::mod_inverse用法的测试程序
  4. boost::geometry模块实现递归多边形线性区域的测试程序
  5. boost::asio::ip::tcp实现阻塞tcp echo客户端的程序
  6. boost::container_hash模块实现哈希序列
  7. ITK:将静态密集2D级别集可视化为高程图
  8. ITK:关闭二进制图像
  9. VTK:Video之OggTheora
  10. VTK:PolyData之RuledSurfaceFilter