解决程序一段时间之后清理缓存的问题

用crontab 定时调用重启的shell脚本
 cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。
  service crond start    //启动服务
  service crond stop     //关闭服务
  service crond restart  //重启服务
  service crond reload   //重新载入配置
  service crond status   //查看服务状态 

查看定时任务:crontab -l
编辑定时任务:crontab -e
日志: 在 /var/log/cron*

minute hour day-of-month month-of-year day-of-week commands 
合法值 00-59 00-23 01-31 01-12 0-6 (0 is sunday) 
除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。
0 20 3 * * 3 cd /home/dxyd/app/manage; sh bin/restart.sh
00 20 05 * * 5 cd /ERP/initsql; sh _mysqlbk.sh

cleartmp.sh
rm -rf /tmp/tomcat.*.28081
restart.sh
sh bin/stop.sh
sh bin/start.sh
start.sh
day=`date +%Y%m%d%H%M`
mv nohup.out nohup.out.${day}
#启动最新的war
ls -t sport-manage-*.war|head -n 1|xargs -i nohup java -Djava.security.egd=file:/dev/./urandom -jar {} &
stop.sh
ps -ef|grep sport-manage- |grep -v grep |awk '{print $2}'|xargs kill -9
sh bin/cleartmp.sh

mysqlbk.sh
#备份数据库
mysqldump -uroot -proot root > erp_$(date +%Y%m%d_%H%M%S).sql
Java 程序在运行一段时间后出现 `Process finished with exit code 1` 错误,通常表明程序在执行过程中发生了异常或错误,导致提前终止。以下是常见的原因及对应的解决方法: ### 1. **未捕获的异常** 程序在运行过程中可能抛出了未被捕获的异常,例如 `NullPointerException`、`ArrayIndexOutOfBoundsException` 或自定义异常。这些异常如果没有被 `try-catch` 块捕获,会导致 JVM 终止并返回退出码 1。 - **解决方案**: 在程序的入口点(如 `main` 方法)中添加全局异常捕获逻辑,以打印详细的异常堆栈信息: ```java public static void main(String[] args) { try { SpringApplication.run(MyApplication.class, args); } catch (Exception e) { e.printStackTrace(); } } ``` 通过分析堆栈信息,可以定位具体的异常来源并进行修复[^4]。 ### 2. **内存问题** Java 程序在运行过程中可能因内存不足(如 `OutOfMemoryError`)而崩溃。这种情况通常发生在处理大量数据、缓存清理或存在内存泄漏时。 - **解决方案**: 使用内存分析工具(如 **VisualVM**、**MAT** 或 **JProfiler**)监控程序的内存使用情况,识别内存泄漏点,并优化对象的创建与销毁逻辑。此外,可以增加 JVM 的堆内存参数: ```bash -Xms512m -Xmx2g ``` ### 3. **资源访问权限问题** 程序在运行过程中可能尝试访问受限制的资源(如文件、网络端口、数据库连接等),但因权限不足导致异常退出。 - **解决方案**: 检查程序访问的文件路径、网络配置及数据库连接信息,确保运行环境具备相应的权限。例如,确保程序可以读写日志文件目录,或数据库用户具备访问权限。 ### 4. **依赖冲突或缺失** 在使用 Spring Boot 等框架时,依赖管理不当可能导致容器无法正常启动。例如,依赖版本冲突、重复引入不同版本的库或缺少必要的启动器依赖。 - **解决方案**: 在 `pom.xml` 中检查依赖项,确保只引入必要的启动器(如 `spring-boot-starter-web`),并避免手动添加可能与启动器冲突的子依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> ``` ### 5. **线程问题** Java 程序中可能存在线程死锁、线程池配置不当或未处理的线程异常,导致程序在运行过程中异常终止。 - **解决方案**: 使用线程分析工具(如 `jstack`)生成线程快照,分析线程状态和阻塞点。同时,在线程池配置中设置合理的拒绝策略和超时机制。 ### 6. **JVM 崩溃或 Native 异常** 在极少数情况下,JVM 本身可能因底层错误(如 `InternalError` 或 `StackOverflowError`)崩溃,导致程序异常退出。 - **解决方案**: 检查是否使用了本地库(如 JNI 调用),并确保其版本与 JVM 兼容。同时,更新 JVM 到最新版本以修复潜在的 bug。 ### 7. **Spring 容器启动失败** 对于 Spring Boot 应用,如果容器未能成功启动,程序可能在初始化阶段失败并退出。 - **解决方案**: 在启动类中添加日志输出,确保 Spring 容器正常加载: ```java public static void main(String[] args) { try { ConfigurableApplicationContext context = SpringApplication.run(MyApplication.class, args); } catch (Exception e) { System.err.println("Spring Boot 启动失败: " + e.getMessage()); e.printStackTrace(); } } ``` ### 总结 `Process finished with exit code 1` 是 Java 程序异常退出的通用信号,需结合日志、异常堆栈和运行环境进行综合分析。常见的排查手段包括: - 查看详细的日志输出,尤其是异常堆栈信息。 - 使用内存和线程分析工具定位资源问题。 - 检查依赖管理,确保没有冲突或缺失。 - 添加全局异常捕获逻辑,防止未处理异常导致程序终止。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值