Ubuntu tomcat8定时重启

本文档介绍了如何在Ubuntu系统中为Tomcat8设置定时重启,以解决因内存占用过高被系统终止的问题。主要内容包括创建一个名为tcRestart.sh的shell脚本,用于启停tomcat,并配置cron定时任务,确保服务每天凌晨自动重启。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ubuntu tomcat8定时重启

由于个人使用的服务器内存等都比较小,tomcat启动几天时间内存后占用过高会被系统杀死,内存问题原因暂时未知,所以在每天凌晨自动重启一下tomcat以保证服务正常访问。
(以下操作都在root用户下进行)

创建shell脚本

在/root/下创建一个shell脚本 tcRestart.sh来自动启停tomcat。注意此shell文件名和内容中ps命令忽略项(grep -v)名称一致,否则会检测到脚本自身导致混淆。
注意:

  1. 其中/etc/init.d/tomcat8 stop(start) 是Ubuntu下的脚本命令,可根据自身情况替换为相应的启动停止命令
  2. 内容中第二行 /etc/profile 的访问权限,直接chmod 777 /etcchmod 777 /etc/profile

tcRestart.sh:

#!/bin/sh
/etc/profile
pid=`ps aux | grep tomcat | grep -v grep | grep -v tcRestart | awk '{print $2}'`
echo $pid

if [ -n "$pid" ]
then
{
   echo ===========shutdown================
   /etc/init.d/tomcat8 stop
   sleep 1
   pid=`ps aux | grep tomcat | grep -v grep | grep -v tcRestart | awk '{print $2}'`
   echo tomcatPid: $pid
   if [ -n "$pid" ]
   then
    {
      sleep 1
      echo ========kill tomcat==============
      kill -9 $pid
    }
   fi
   sleep 1
   echo ===========startup.sh==============
   /etc/init.d/tomcat8 start
 }
else
echo ===========startup.sh==============
/etc/init.d/tomcat8 start

fi

可能的错误:

  1. java.net.ConnectException: Connection refused: connect ,参考:https://blog.youkuaiyun.com/jiangyu1013/article/details/80926682
  2. java.io.FileNotFoundException: /usr/share/tomcat6/conf/server.xml (No such file or directory) ,参考:https://blog.youkuaiyun.com/neonlight/article/details/5975768
  3. shell脚本头,#!/bin/sh与#!/bin/bash的区别. 参考:https://www.cnblogs.com/jonnyan/p/8798364.html

创建定时任务

  1. 使用命令crontab -e,在文件尾添加 30 04 * * * /root/tcRestart.sh,注意这个命令中的时间格式,每段用空格隔开,否则退出时保存会报错:errors in crontab file, can't install.
  2. 启动定时任务,service cron start 对应停止命令:service cron stop,重载命令:service cron reload
  3. 查看日志,/var/log/cron

crontab时间格式:
格式:* * * * * command
对应:M H D m d command
对应:分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令或脚本内容
时间格式参考:https://blog.youkuaiyun.com/home_zhang/article/details/7996809

错误:Redirecting to /bin/systemctl start cron.service Failed to start cron.service: Unit not found.
将命令service cron start 换成 systemctl enable crond

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值