tomcat监控,自动重启shell脚本
tomcat监控,自动重启shell脚本如下,取名 monitor_tomcat.sh:
#!/bin/sh # func:自动监控tomcat脚本并且执行重启操作 # 获取tomcat进程ID(其中[grep -w '.....']中的.....需要替换为实际部署的tomcat文件夹名,如下)
TomcatID=$(ps -ef |grep tomcat |grep -w '/usr/local/tomcat/apache-tomcat-8.5.31'|grep -v 'grep'|awk '{print $2}')
# 获取同一个tomcat重复启动个数
TomcatCount=$( ps -ef |grep tomcat |grep -w '/usr/local/tomcat_autoupdate'|grep -v 'grep'|awk '{print $2}' |wc -l) # tomcat启动程序(这里注意tomcat实际安装的路径)
StartTomcat=/usr/local/tomcat/apache-tomcat-8.5./bin/startup.sh
TomcatCache=/usr/local/tomcat/apache-tomcat-8.5./work #定义要监控的页面地址
WebUrl=http://localhost:8080/test2 #日志输出
GetPageInfo=/tmp/tomcat_oip_back_visit.info
TomcatMonitorLog=/tmp/tomcat_oip_back_monitor.log Monitor()
{
echo "[info]开始监控tomcat...[$(date +'%F %H:%M:%S')]"
if [[ $TomcatCount -gt ]];then #这里判断Tomcat进程是否有重复启动,有重复启动则全部干掉
ps -ef |grep tomcat |grep -w '/usr/local/tomcat_autoupdate'|grep -v 'grep'|awk '{print $2}' | xargs kill -
echo "同一tomcat开启开启 $TomcatCount 个进程,统统kill掉"
sleep
else
if [ $TomcatID ];then #这里判断Tomcat进程是否存在
echo "[info]当前tomcat进程ID为:$TomcatID,继续检测页面..."
# 检测是否启动成功(成功的话页面会返回状态""),100秒无响应就不等待了
TomcatServiceCode=$(curl -s -o $GetPageInfo -m --connect-timeout $WebUrl -w %{http_code})
if [ $TomcatServiceCode -eq ];then
echo "[info]页面返回码为$TomcatServiceCode,tomcat启动成功,测试页面正常"
else
echo "[error]tomcat页面出错,请注意...状态码为$TomcatServiceCode,错误日志已输出到$GetPageInfo"
echo "[error]页面访问出错,开始重启tomcat"
kill - $TomcatID # 杀掉原tomcat进程
sleep
rm -rf $TomcatCache # 清理tomcat缓存
$StartTomcat
fi
else
echo "[error]tomcat进程不存在!tomcat开始自动重启..."
echo "[info]$StartTomcat,请稍候..."
rm -rf $TomcatCache
$StartTomcat
fi
fi
echo "--------------------------"
}
Monitor>>$TomcatMonitorLog
2、赋予monitor_tomcat.sh可执行权限:
chmod monitor_tomcat.sh
3、手动执行一下monitor_tomcat.sh看是否能启动指定位置的tomcat
./monitor_tomcat.sh
4、脚本解释说明
ps -e //显示所有进程
ps -f //按树状显示
grep tomcat //只取含有tomcat的行
grep -w 'apache-tomcat-5.5.23' //-w选项搜索一个单词,并且避免搜索到词中的部分字串。 搜索含有apache-tomcat-5.5.23的行
grep -v 'grep' //去掉含有grep的行
awk '{print $2}' //用空格切分 取第二列
ps -ef |grep tomcat |grep -w 'apache-tomcat-5.5.23'|grep -v 'grep'|awk '{print $2}' //获取tomcat的进程id
但是仅仅是 tomcat进程存在是不够的,需要访问下 站点页面看看 是否访问正常 正常状态为200 通过curl
curl -s -o $GetPageInfo -m --connect-timeout $WebUrl -w %{http_code} //访问页面并保存页面内容返回状态码
-s --silent //静默模式,就是不显示错误和进度
-o $GetPageInfo //将文件保存到本地并命名为$GetPageInfo
-m //表示获取网页的最长时间(数据传输的最大允许时间)
-m //表示如果10秒内无法完成获取网页源码的操作,则放弃
--connect-timeout //连接超时时间
--connect-timeout //表示如果10秒内无法连接,则放弃
$WebUrl //就是我们要访问的页面路径变量
-w //curl的-w参数我们可以自定义curl的输出,%{http_code}代表http状态码
如果状态码为200则 tomcat正常,否则 kill 杀掉tomcat 进程, 访问tomcat的启动脚本 start.sh 启动tomcat
5、添加进crontab中
输入命令 :
crontab -e
进入编辑界面(操作类似vim),编辑为每5分钟执行一次脚本进行tomcat检测
*/ * * * * /usr/local/my_crontab/monitor_tomcat.sh
6、批量删除进程:
| xargs kill -
将前面的结果作为参数传入,一并kill掉
7、统一前面结果的字符串个数
|wc -l
参考:https://blog.csdn.net/zhang41228/article/details/79860030
https://www.cnblogs.com/cocoat/p/6017283.html
https://blog.csdn.net/lzz313/article/details/9389211
tomcat监控,自动重启shell脚本的更多相关文章
- nginx奔溃自动重启Shell脚本
# vi /usr/local/nginx/sbin/nginx_restart.sh 贴入一下代码: #!/bin/bash #www.xmsolink.com #Monitor nginx ser ...
- 检测进程不存在自动重启shell脚本
#!/bin/bash WORKDIR="/usr/local/gse/gseagent" [[ -d $WORKDIR ]] && { if ! ps aux|g ...
- 如何设置tomcat定时自动重启
,今天笔者就跟大家分享一下如何设置tomcat定时自动重启. 第一:把Tomcat6安装成windows 2003服务. 1.首先检查tomcat\bin目录下是否有service.bat文件,如图: ...
- centos7 开机自动执行shell脚本
centos7 开机自动执行shell脚本 90十80 关注 2018.12.23 09:37 字数 309 阅读 485评论 0喜欢 0 自己新建一个脚本,如centnet-service.sh 经 ...
- JFinal中文件上传后会默认放置到WebContent的upload包下,但是tomcat会自动重启,当我们再次打开upload文件夹查看我们刚刚上传的文件时,发现上传的文件已经没有了。
JFinal中文件上传后会默认放置到WebContent的upload包下,但是tomcat会自动重启,当我们再次打开upload文件夹查看我们刚刚上传的文件时,发现上传的文件已经没有了.因为tomc ...
- 实用脚本----Linux下Jdk和Tomcat自动安装shell脚本总结
系统环境为:ubuntu 14.04 一.JDK 自动安装脚本 jdk自动安装bash shell脚本,截止今天(2014/10/15)亲测可用: sudo su #切换到root权限 mkdir / ...
- linux下实现tomcat定时自动重启
tomcat自带的脚本中没有提供直接restart的模式,但是有start和shutdown两种模式.要实现restart模式,实际上只需要判断是否已经启动tomcat,若已经启动则限制性shutdo ...
- MySQL自动备份shell脚本
在数据库的日常维护工作中,除了保证业务的正常运行以外,就是要对数据库进行备份,以免造成数据库的丢失,从而给企业带来重大经济损失.通常备份可以按照备份时数据库状态分为热备和冷备,按照备份数据库文件的大小 ...
- 使用redis4.0.1和redis-cluster搭建集群并编写重启shell脚本
1.删除机器上原有的redis2.8 关闭redis-server killall -9 redis-server 查找redis文件所在目录 which redis 删除相关文件 rm -rf re ...
随机推荐
- Android studio 使用技巧和问题
最近更新Android studio版本到1.2.1.1后 出现了一些问题,首先一个就是创建一个项目后,布局文件会提示 找不到类. 网上找了下答案,原来是这个版本的bug. 其实解决起来很简单,找到 ...
- Python的subprocess模块(一)
原文连接:http://www.cnblogs.com/wang-yc/p/5624880.html 一.简介 subprocess最早在2.4版本引入.用来生成子进程,并可以通过管道连接他们的输入/ ...
- Linux进程虚拟地址空间管理2
2017-04-12 前篇文章对Linux进程地址空间的布局以及各个部分的功能做了简要介绍,本文主要对各个部分的具体使用做下简要分析,主要涉及三个方面:1.MMAP文件的映射过程 2.用户 内存的动态 ...
- mysql数据池设置
参考链接https://www.cnblogs.com/KKSoft/p/8040374.html python的数据库连接池包:DBUtils DBUtils提供两种外部接口: Persistent ...
- mysql参照完整性 策略设置之 on update 和 on delete
一.当表中有外键约束的时候参照表中数据的删除和修改违背参照完整性时 可根据以下策略进行处理 1.两条策略设置为cascade的时候 参照表中的数据修改或者删除的时候改表中数据也会被删除 2.两条策略设 ...
- mysql监控优化(三)慢查询
顾名思义,慢查询日志中记录的是执行时间较长的query,也就是我们常说的slowquery,通过设--log-slow-queries[=file_name]来打开该功能并设置记录位置和文件名.慢查询 ...
- 如何理解PHP的单例模式
单例模式就是让类的一个对象成为系统中的唯一实例,避免大量的 new 操作消耗的资源. PHP的单例模式实现要求: 1.一个private的__construct是必须的,单例类不能在其它类中实例化,只 ...
- php about session store db or cache
PHP关于Session的配置: 在php.ini中配置为:session.name = PHPSESSID 在请求开始的时候,会话名称会被重置并存储到session.name配置项. 所以要想在不改 ...
- 记CM+kerberos环境停电后无法启动报错An error: (java.security.PrivilegedActionException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism leve
公司突然停电,然后cm环境无法重启,报错 An error: (java.security.PrivilegedActionException: javax.security.sasl.SaslExc ...
- 新一批创业者金矿,iclap谁与争锋
19世纪,美国西部开发,无数拓荒者涌入,并最终因金矿的发现形成了淘金热.而当无数人埋头寻找黄金之时,有一个人却抬起头看到了潜藏在无数淘金者身上的金矿-这个人就是牛仔裤的发明者,Levi’s的创始人-李 ...