shell实战之tomcat看门狗
1、脚本简介
tomcat看门狗,在tomcat进程异常退出时会自动拉起tomcat进程并记录tomcat运行的日志。
函数说明:
log_info:打印日志的函数,入参为需要在日志中打印的msg
start_tom:启动tomcat的函数
check_tom_run:每隔30s检测tomcat进程是否存在
log_backup:备份tomcat监控日志
- check_tom_run每隔30s检测tomcat进程是否存在,log_info用于记录tomcat运行日志和操作日志。
- tomcat进程不存在时,执行start_tom去启动。
- 当日志文件大小大于指定大小时,则备份监控日志。
2、前提条件
a、需要一台Linux主机
b、主机上已部署tomcat
访问地址:http://localhost:8080/ 如果出现以下界面,则说明tomcat已成功启动。

3、脚本代码
脚本代码如下:
#!/bin/bash
#以下为多行注释
: << !
作用:tomcat watch dog,用于在tomcat进程退出后,自动拉起tomcat
函数说明:
log_info:打印日志的函数,入参为需要在日志中打印的msg
start_tom:启动tomcat的函数
check_tom_run:每隔10s检测tomcat进程是否存在
log_backup:备份tomcat监控日志
! curr_path=`pwd`
#tomcat的安装路径
tom_path=/home/stephen/InstallPath/apache-tomcat-8.5. #定义打印日志的函数
function log_info(){
local curr_time=`date "+%Y-%m-%d %H:%M:%S"`
log_file=${curr_path}/tom_running.log
#判断日志文件是否存在
if [ -e ${log_file} ]
then
#检测文件是否可写
if [ -w ${log_file} ]
then
#若文件无写权限则使用chmod命令赋予权限
chmod ${log_file}
fi
else
#若日志文件不存在则创建
touch ${log_file}
fi
#写日志
local info=$
echo "${curr_time} `whoami` [Info] ${info}">>${log_file}
} function start_tom(){
log_info "Begin to start tomcat."
cd ${tom_path}/bin
log_info "cd ${tom_path}/bin"
sh startup.sh
log_info "sh startup.sh"
#使用ps命令+awk获取tomcat的PID
tom_pid=`ps -aux|grep apache-tomcat|grep -v grep|awk '{print $2}'`
if [ -z ${tom_pid} ]
then
sh startup.sh
fi
log_info "End to start tomcat."
} #如果tomcat_pid为零,则说明tomcat进程不存在,需要去重启
function check_tom_run()
{
tom_pid=`ps -aux|grep apache-tomcat|grep -v grep|awk '{print $2}'`
echo ${tom_pid}
if [ -z ${tom_pid} ]
then
echo "tomcat process is not running."
#调用函数start_tom
start_tom
log_info "tomcat process is not running."
#打印日志
else
echo "tomcat process is running"
#打印日志
log_info "tomcat process is running"
fi
}
#备份日志
function log_backup(){
cd ${curr_path}
log_name=tom_running.log
#获取当前日志的大小
log_size=`ls -all|grep -v ${log_name}.|grep ${log_name}|awk '{print $5}'`
echo ${log_size}
#当日志大于150MB时进行备份并清空旧的日志
expect_size=`expr \* \* `
echo ${expect_size}
if [ ${log_size} -gt ${expect_size} ]
then
log_info "Begin to backup log."
local ct=`date "+%Y-%m-%d-%H-%M-%S"`
cp ${log_name} ${log_name}.${ct}
log_info "cp ${log_name} ${log_name}.${ct}"
#使用gzip命令压缩日志
gzip -q ${log_name}.${ct} ${log_name}.${ct}.gz
#清空旧日志
cat /dev/null > ${log_name}
log_info "cat /dev/null > ${log_name}"
fi
} #隔30s循环执行check_tom_1run
while [ ]
do
check_tom_run
log_backup
#休眠30s
sleep
done
4、运行结果
4.1、运行脚本命令如下
chmod +x /tomcatWatchDog.sh
#&表示脚本后台运行
./tomcatWatchDog.sh &
4.2、新打开一个窗口,杀掉tomcat进程
#获取tomcat的PID
ps -ef|grep tomcat
#kill进程,PID为tomcat进程ID
kill - PID
4.3、查看tom_running文件,从日志来看tomcat进程已自动拉起。
-- :: stephen [Info] tomcat process is running
-- :: stephen [Info] tomcat process is running
-- :: stephen [Info] tomcat process is running
-- :: stephen [Info] tomcat process is running
-- :: stephen [Info] Begin to start tomcat.
-- :: stephen [Info] cd /home/stephen/InstallPath/apache-tomcat-8.5./bin
-- :: stephen [Info] sh startup.sh
-- :: stephen [Info] End to start tomcat.
-- :: stephen [Info] tomcat process is not running.
-- :: stephen [Info] tomcat process is running
-- :: stephen [Info] tomcat process is running
4.4、当日志文件大小大于指定大小时,会备份日志文件。
-rwxr-xr-x stephen stephen 4月 : tomcatWatchDog.sh*
-rwxrwx--- stephen stephen 4月 : tom_running.log*
-rwxr-x--- stephen stephen 4月 : tom_running.log.-----.g
shell实战之tomcat看门狗的更多相关文章
- linux shell实现守护进程 看门狗 脚本
嵌入式初学者,第一次上传代码.昨天做了一个udhcpd与udhcpc的守护,目前只会用shell模仿编写,还有什么方法可以做守护呢? ? 1 2 3 4 5 6 7 8 9 10 11 12 13 1 ...
- shell 之 用linux定时任务crontab和watchdog.sh脚本做软件看门狗
1.简介 看门狗的作用是定期检测服务正常运行,如果发现服务不在了,会重新拉起服务:linux中可以利用系统的定时任务功能crontab定期的去执行watchdog.sh脚本,而watchdog.sh脚 ...
- Spring Boot 实现看门狗功能 (调用 Shell 脚本)
需要实现看门狗功能,定时检测另外一个程序是否在运行,使用 crontab 仅可以实现检测程序是否正在运行,无法做到扩展,如:手动重启.程序升级(如果只需要实现自动升级功能可以使用 inotify)等功 ...
- 软件看门狗--别让你地程序无响应(使用未公开API函数IsHungAppWindow,知识点较全)
正文一.概述一些重要的程序,必须让它一直跑着:而且还要时时关心它的状态——不能让它出现死锁现象.当然,如果一个主程序会出现死锁,肯定是设计或者编程上的失误.我们首要做的事是,把这个Bug揪出来.但如果 ...
- Linux看门狗脚本 1.4
近期项目的看门狗经历了三个版本号. 第一个版本号: 用ps -ef,假设程序挂了就启动 第二个版本号: 程序因为执行时会出现不再监听7901port,所以不能简单推断机器是不是挂了,而是推断此port ...
- 树莓派 Raspberry 软件源更改 看门狗启用
看门狗无法在pi1上执行,似乎后更高级的pi上面才可用 1.替换脚本 下面脚本请直接复制到终端执行!! 适用于raspbian-stretch(基于Debian9) sudo -s echo -e & ...
- STM32之看门狗(独立与窗口)
广大的互联网网友们,大家早上中午晚上好,我是某某某..对于狗..看过<忠犬八公>的我.无不深深的被狗的义气与灵气所震撼..我也觉得在所有mcu中用看门狗来形容让系统复位的功能是很恰当的.也 ...
- zigbee学习之路(十一):看门狗
一.前言 今天,我们要通过实验学习和认识一下看门狗的使用,看门狗是为了防止防止程序跑飞的,通过不断的喂狗,使看门狗能持续监管程序的运行状态,当程序跑飞时,能及时把程序拽回来. 二.原理与分析 在CPU ...
- S3C2416 看门狗
原理:看门狗自己有个硬件计数器,看门狗开启后,计数器就开始计数,当计数为0时触发,触发事件有两个:系统复位和中断,可设置屏蔽. 在计数器计数到0之前,程序可以重新设置计数器中的数值,称之喟狗.计数器的 ...
随机推荐
- python 获取mac地址zz
通过python获取当前mac地址的方法如下:(1)通用方法,借助uuid模块def get_mac_address(): import uuid node = uuid.getnode() ...
- [Tips]vim设置
临时设置 在vim中输入 :set nu! 若显示行号时,它的功能时取消行号:若不显示行号时,它的功能是显示行号. 固定设置 在~/.vimrc中进行设置. 添加注释: 双引号是注释 ” this i ...
- PHP通过经纬坐标计算两个地址的距离
<?php /** *求两个已知经纬度之间的距离,单位为米 * *@param lng1,lng2 经度 * *@param lat1,lat2 纬度 * *@return float 距离,单 ...
- H5上传功能
近期开发一个关于微信公总号二次开发中,上传图片的需求,测试几个开源插件,更新一些心得,有需要可留言!!! plupload plupload多张上传图片的一个参考demo ajaxFileUpload ...
- java中class文件与jar文件
1. JAR 文件包 JAR 文件就是 Java Archive File,顾名思意,它的应用是与 Java 息息相关的,是 Java 的一种文档格式.JAR 文件非常类似 ZIP 文件——准确的说, ...
- DP-01背包
题目传送门 题目类似01背包,但存在一个选取先后不同价值会有损耗,所有对物品按易损耗的程度从大到小排个序来顺序选取. #include<bits/stdc++.h> using names ...
- Ubuntu ARM更改为国内源
关键词:ubuntu arm ubuntu-ports 国内源 镜像 阿里源 apt apt-get install update 0%working 速度慢 rk3399 开发板 ...
- 神经网络_线性神经网络 3 (Nerual Network_Linear Nerual Network 3)
1 LMS 学习规则_解方程组 1.1 LMS学习规则举例 X1=[0 0 1]T,t1=0:X2=[1 0 1]T,t2=0:X3=[0 1 1]T,t3=0:X1=[1 1 1]T,t1=1. 设 ...
- 5 个免费的受欢迎的 SQLite 管理工具【申明:来源于网络】
5 个免费的受欢迎的 SQLite 管理工具 包含内容: SQLite Expert – Personal Edition SQLite Expert 提供两个版本,分别是个人版和专业版.其中个人版是 ...
- 使用BurpSuite进行双文件上传拿Webshell
首先进入网站后台:(后台界面应该是良精CMS) <ignore_js_op> 在 添加产品 这一栏有个上传文件: <ignore_js_op> 选择一个*.jpg格式的图片进行 ...