背景:用nohup运行jar包时候,会产生大量的日志文件,影响磁盘存储,生产环境大概1天有30个g
解决方案:
1、用split分割日志,代码在下面(可以先测试一下),然后加入到定时任务中,每天执行。
this_path=$(cd /app/query4a/; pwd)
echo $this_path
current_date=$(date -d “-1 day” “+%Y%m%d”)
echo $current_date
cp /app/query4a/nohup.out /app/query4a/split_log/${current_date}.log
cat /dev/null > /app/query4a/nohup.out
缺点:日志量大的时候执行非常慢,且清空后的nohup文件得需要好久才能存新的日志
2、用logrote分割压缩日志
这个工具,很好用很强大,功能很全。我们只介绍自己用到的地方。
我参考的这个文章Linux进阶(日志分割工具logrotate)_linux日志切割-CSDN博客
我没弄定时任务,每天晚上也是自动跑的脚本。参考60g日志分割,20分钟就成功了,且新的日志会存到新的nohup.out文件中
代码如下:
在cd /etc/logrotate.d/文件下新建一个脚本,名字是query4a
脚本如下:
/app/query4a/nohup.out {
daily # 每天分割一次
#size 5M # 源文件小于5M时不分割
rotate 180
copytruncate
notifempty # 当日志文件为空时不分割
missingok
dateext # 切割后的文件添加日期作为后缀
dateyesterday # 配合dateext使用,添加前一天的日期作为分割后日志的后缀
dateformat -%Y-%m-%d
compress
create 0644 appuser appuser
}
3、如果不想生成nohup.out日志,可以在启动程序的时候
nohup jav -jar xx.jar > /dev/null 2>&1 &