springboot项目使用nohup将日志指定输出文件过大问题及解决办法
springboot项目使用nohup将日志指定输出文件过大解决办法
假设目前有一个start.sh文件,内容为以下:
#!/bin/sh jarname='app-gmt' pid=`ps aux | grep $jarname | grep -v grep | grep java | awk '{print $2}'` if [ "$pid" == "" ] then echo $jarname"进程不存在, 直接启动"$jarname"系统" else echo "准备杀掉"$jarnamed"进程: "$pid kill -9 $pid fi nohup java -jar $jarname.jar --spring.profiles.active=online -server -Xms512m -Xmx1024m -Xss256k >> ./run.log 2>&1 & echo "start success!!!"
注意看 nohup … >> ./run.log 2>&1 & 这一行,这里是将该进程的日志全部输出到指定的文件里,应该有不少人是这么做的。
那么这样做会出现一种情况,就是run.log会越来越大,直到爆炸。
该怎么解决呢?
一共分为两个步骤:
1.先创建一个清理日志文件的脚本 1.直接清除方式 2.保留部分方式 2.再创建一个定时任务(比如凌晨五点执行一次脚本)
下面对这两部进行细说:
第一点:这点其实是要看个人的具体需求的,比如清除的条件,可以是文件达到多大进行处理,处理时有的会保留一部分,有的会全清掉。
1.先说直接清除方式:
先创建一个脚本文件,内容如下:
#!/bin/bash # 设置文件路径 FILE_PATH="/home/program/app/run.log" # 设置文件大小阈值,单位为字节 THRESHOLD_SIZE=$((100 * 1024 * 1024)) # 获取文件大小 FILE_SIZE=$(du -b "$FILE_PATH" | cut -f1) # 检查文件是否超过阈值 if [ $FILE_SIZE -gt $THRESHOLD_SIZE ]; then # 文件超过阈值,清空文件内容 echo -n > "$FILE_PATH" echo "File has been cleaned up." else echo "File size is within threshold." fi
如果日志文件达到了100M,就清空文件内容。
记得把FILE_PATH改为你自己的日志文件路径
然后加入到定时任务:
crontab -e
内容如下:
0 5 * * * /data/log_clean/clean_app_log_file.sh
记得把路径替换成你自己的文件路径
2.保留部分方式
还是创建一个脚本文件:
log=`tail -n 10000 nohup.out`; echo "$log" > /home/program/app/run.log
记得把路径换成你自己的日志文件路径
然后创建定时任务,跟直接清除方式一样。
到此这篇关于springboot项目使用nohup将日志指定输出文件过大解决办法的文章就介绍到这了,更多相关springboot nohup文件过大内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
反射机制:getDeclaredField和getField的区别说明
这篇文章主要介绍了反射机制:getDeclaredField和getField的区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-06-06myeclipse开发servlet_动力节点Java学院整理
MyEclipse,是在eclipse基础上加上自己的插件开发而成的功能强大的企业级集成开发环境,主要用于Java、Java EE以及移动应用的开发。下面这篇文章主要给大家介绍了关于myeclipse开发servlet的相关资料,需要的朋友可以参考下。2017-07-07spring boot devtools在Idea中实现热部署方法
这篇文章主要介绍了spring boot devtools在Idea中实现热部署方法及注意要点,需要的朋友可以参考下2018-02-02springboot下mybatis-plus开启打印sql日志的配置指南
这篇文章主要给大家介绍了关于springboot下mybatis-plus开启打印sql日志的配置指南的相关资料,还介绍了关闭打印的方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下2023-03-03
最新评论