Linux定时监听Tomcat服务
Linux 下 Tomcat 服务,因为各种原因异常关闭后,实现自动重启服务,保证服务可用。
需要使用到的知识点涉及到 crontab,分为两种:系统级别(/etc/crontab)和用户级别(crontab -e),本文使用的是系统级别的 crontab .
在你的服务器目录上创建一个 .sh 脚本文件,我这边命名为 monitor.sh,该脚本内容如下:
#!/bin/sh
# 这个是 java 在服务器端所配置的位置 使用 which java 查看即可
JAVA_HOME=/usr/java/jdk1.8.0_171
JRE_HOME=/usr/java/jdk1.8.0_171/jre
date=`date`
# tomcat-9 是你 tomcat 的目录所取的名称
echo 'operate restart tomcat: /usr/local/tomcat/tomcat-9/bin'
pid=`ps -ef |grep tomcat |grep -w 'tomcat-9'|grep -v 'grep'|awk '{print $2}'`
#pid=`lsof -i:88`
echo 'exist pid:'$pid
#-z表示不存在
if [ -z "$pid" ] then
echo "===========startup.sh=============="
/usr/local/tomcat/tomcat-9/bin/startup.sh
else
echo "tomcat already start,no need to do"
fi
- 为其添加可执行的权限:chmod +x /var/sh/monitor.sh
- 编辑系统级别所在的定时配置文件:vim /etc/crontab
- 追加内容:*/10 * * * * root /var/sh/monitor.sh #定义十分钟检查tomcat,如果关闭就重启 (注意空格)

定时
关闭服务器上的 Tomcat 服务后,稍等一会系统就会执行所编写的定时脚本
控制台会提示:
You have a change on /var/spool/mail/root
# 查询定时任务是否执行成功的日志 tail -f /var/spool/mail/root
会报如下错误:
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program
该处错误需要在对应的 Tomcat 中增加自己的 JAVA_HOME 和 JRE_HOME 配置
vim /usr/local/tomcat/tomcat-9/bin/setclasspath.sh
加入配置:
export JAVA_HOME=/usr/java/jdk1.8.0_171 export JRE_HOME=/usr/java/jdk1.8.0_171/jre

然后关闭 Tomcat 运用程序,再 tail -f /var/spool/mail/root 查看定时任务日志是否会出现错误,没有就可以正常运行了。
追加:服务器 Tomcat 增加内存大小
打开至 Tomcat 的 bin 目录,编辑 vim catalina.sh ,在 OS specific support. $var must be set to either true or false.
内容后追加下面的内容即可,内存大小可根据自己的服务器来更改。
JAVA_OPTS="-Xmx2048m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=768m -Xss2m"CATALINA_OPTS="-Djava.awt.headless=true"
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持教程之家。












