每天凌晨2点自动重启Tomcat以暂时解决内存溢出问题,目的学习 ps awk 以及| 管道命令的应用
1. 创建重启脚本 restart_tomcat.sh
#!/bin/bash
# 修改以下路径为你的Tomcat实际安装路径
TOMCAT_HOME="/opt/tomcat"
LOG_FILE="/tmp/tomcat_restart.log"
# 记录重启时间
echo "=== 开始重启Tomcat [$(date +'%F %T')] ===" >> $LOG_FILE
# 1. 停止Tomcat
$TOMCAT_HOME/bin/shutdown.sh >> $LOG_FILE 2>&1
# 等待5秒确保进程结束
sleep 5
# 2. 检查并强制终止残留进程(如果有)
TOMCAT_PID=$(ps -ef | grep $TOMCAT_HOME | grep java | awk '{print $2}')
if [ -n "$TOMCAT_PID" ]; then
echo "检测到Tomcat进程 $TOMCAT_PID 仍在运行,强制终止..." >> $LOG_FILE
kill -9 $TOMCAT_PID >> $LOG_FILE 2>&1
sleep 2
fi
# 3. 启动Tomcat
$TOMCAT_HOME/bin/startup.sh >> $LOG_FILE 2>&1
echo "=== 重启完成 [$(date +'%F %T')] ===" >> $LOG_FILE
2. 赋予脚本执行权限
chmod +x /path/to/restart_tomcat.sh
3. 配置Cron定时任务
# 编辑当前用户的crontab
crontab -e
在文件末尾添加:
0 2 * * * /path/to/restart_tomcat.sh
4. 验证配置
-
手动测试脚本:
/path/to/restart_tomcat.sh
检查日志
/tmp/tomcat_restart.log
确认无报错。 -
检查Cron日志(可选):
tail -f /var/log/cron
注意事项
- 路径适配:确保脚本中的
TOMCAT_HOME
与实际安装路径一致。 - 权限问题:如果Tomcat需要特定用户权限,可在脚本中使用
sudo -u tomcat_user
或直接以对应用户部署脚本。 - 内存溢出根治建议:
- 调整JVM参数(如
-Xmx
增加堆内存)。 - 使用内存分析工具(如VisualVM、MAT)查找内存泄漏。
- 检查应用代码或第三方库是否存在资源未释放问题。
- 调整JVM参数(如