Crontab是Linux系统中强大的定时任务工具,可以用于定期监测和维护Tomcat应用程序。以下是详细的实现方案:
创建一个脚本检查Tomcat进程是否存在:
#!/bin/bash
# tomcat_monitor.sh
TOMCAT_HOME=/opt/tomcat
TOMCAT_PROCESS_NAME=java
TOMCAT_USER=tomcat
EMAIL=admin@example.com
# 检查Tomcat进程是否运行
if ! pgrep -u $TOMCAT_USER -f $TOMCAT_PROCESS_NAME > /dev/null
then
echo "Tomcat is down! Attempting to restart..." | mail -s "Tomcat Down Alert" $EMAIL
$TOMCAT_HOME/bin/startup.sh
fi
#!/bin/bash
# clean_tomcat_logs.sh
TOMCAT_HOME=/opt/tomcat
LOG_RETENTION_DAYS=30
# 清理旧的日志文件
find $TOMCAT_HOME/logs -name "*.log" -type f -mtime +$LOG_RETENTION_DAYS -exec rm -f {} \;
find $TOMCAT_HOME/logs -name "*.txt" -type f -mtime +$LOG_RETENTION_DAYS -exec rm -f {} \;
find $TOMCAT_HOME/logs -name "catalina.out*" -type f -mtime +$LOG_RETENTION_DAYS -exec rm -f {} \;
#!/bin/bash
# tomcat_memory_monitor.sh
TOMCAT_PID=$(pgrep -f tomcat)
MEMORY_THRESHOLD=90 # 百分比
EMAIL=admin@example.com
if [ -n "$TOMCAT_PID" ]; then
MEMORY_USAGE=$(ps -p $TOMCAT_PID -o %mem | tail -n 1 | awk '{print int($1)}')
if [ $MEMORY_USAGE -gt $MEMORY_THRESHOLD ]; then
echo "Tomcat memory usage is high: $MEMORY_USAGE%" | mail -s "Tomcat Memory Alert" $EMAIL
fi
fi
使用crontab -e
命令编辑当前用户的crontab文件,添加以下内容:
# 每分钟检查Tomcat是否运行
* * * * * /path/to/tomcat_monitor.sh >/dev/null 2>&1
# 每天凌晨3点清理日志
0 3 * * * /path/to/clean_tomcat_logs.sh >/dev/null 2>&1
# 每30分钟检查内存使用
*/30 * * * * /path/to/tomcat_memory_monitor.sh >/dev/null 2>&1
# 每周一凌晨2点重启Tomcat(预防内存泄漏)
0 2 * * 1 /opt/tomcat/bin/shutdown.sh && sleep 30 && /opt/tomcat/bin/startup.sh
如果需要更全面的监控,可以考虑:
chmod +x /path/to/*.sh
通过以上配置,可以实现Tomcat应用程序的自动化监测和维护,提高系统稳定性。