一、tomcat、mysql...等服务,万一出现宕机怎么办?
1,tomcat守护者,每1小时检查一次tomcat是否被关闭,关闭的话就执行tomcat startup.sh 启动
执行 crontab -e
0 */1 * * * [ ! "`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`" = "" ] && echo "tomcat is start" >> /Users/colin/Desktop/cron.log || (/usr/local/bin/ilang "系统检测到tomcat意外关闭,正在尝试重新启动";/home/pi/windowdb/apache-tomcat-7.0.73/bin/startup.sh;/usr/local/bin/ilang "tomcat重启完毕。")
说明:/usr/local/bin/ilang 为语音朗读软件,类似于MacOS的say命令,如果没有安装或者不用语音提示,也可以替换成echo '日志信息' >> log文件之类的shell脚本语句。
如果不需要刻意朗读提示信息也可以直接使用flock文件锁方式尝试启动:
0 * * * * flock -xn /home/pi/windowdb/apache-tomcat-7.0.73/tomcat.lock -c "/home/pi/windowdb/apache-tomcat-7.0.73/bin/startup.sh"
2,tomcat重启者,每天凌晨1点钟,系统将自动杀死tomcat进程,然后执行tomcat startup.sh 启动
0 1 * * * kill -9 `ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`;/home/pi/windowdb/apache-tomcat-7.0.73/bin/startup.sh;
说明:请替换/home/pi/windowdb/apache-tomcat-7.0.73/bin/startup.sh为实际路径。如果不是tomcat进程,请替换grep 后的tomcat。
二、如何从一台服务器监控并守护另外一台服务器的tomcat服务?
演员:
1,Mac笔记本(小码)
2,树莓派(小派)
背景交代:
小码有时候开机,有时候又关机,不一定。而小派一直开机状态,小派上跑tomcat服务,经常宕机,估计存在内存溢出情况,但是又没时间重构项目、主要是老旧项目也不值当付出精力。
需求:
1,小码在开机时,主动ssh登陆到小派,检查tomcat是否开启,若未开启,则自动启动小派的tomcat。
2,小派常年开启,资源损耗严重。所以想将crontab任务部署在小码上。
实施步骤:
1,首先小码登陆小派需要免密码登陆。参考另外一篇《Linux ssh免密码登陆》
2,在小码笔记本上执行crontab -e,并且增加如下内容:
* * * * * a="`ssh pi "ps -ef | grep tomcat | grep -v grep | awk '{print $2}'"`"; ( [ "${a}" = "" ] && (/usr/bin/say "系统检测到tomcat服务未启动,正在尝试重新启动"; echo "`/bin/date` 系统检测到tomcat没有启动,正在尝试重新启动..." >> /Users/colin/Desktop/cron.error.log; ssh pi "/home/tomcat/start.sh" ) || (echo "`/bin/date`tomcat运行中..." >> /Users/colin/Desktop/cron.info.log) )
以上shell脚本首先 ssh pi 并且执行 ps -ef 查询 tomcat 进程,将查询结果赋值给变量 a ,然后判断 a 是否等于空字符串,若等于空字符串则表示没有tomcat进程;shell 中的if 使用格式: [条件] && 执行 || 否则执行 。
注意:本文归作者所有,未经作者允许,不得转载