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文件过大内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Spring中ApplicationContextAware的使用方法详解
ApplicationContextAware 通过它Spring容器会自动把上下文环境对象调用ApplicationContextAware接口中的setApplicationContext方法,这篇文章主要介绍了Spring中ApplicationContextAware的作用,需要的朋友可以参考下2023-03-03
Spring Boot3整合Mybatis Plus的详细过程(数据库为MySQL)
这篇文章主要介绍了Spring Boot3整合Mybatis Plus的详细过程(数据库为MySQL),本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧2024-07-07


最新评论