linux jar包启动后日志清空问题记录

1、启动命令---覆盖模式

nohup java -jar test.jar > test.txt 2>& 1 &

这种方式启动的 在shell里使用清空命令清空文件无效 
 

cat /dev/null > test.txt #清空
echo -n "" > test.txt # 清空不生成空行
echo "" > test.txt #清空
cmd >> test.txt  2>&1 #清空

使用以上四种方式清空都可以清空文件,但是清空后看到文件为0kb,但是过后有新日志写入又会回到原来的大小,这是因为上面的启动方式 test.jar > test.txt 是覆盖文件,这种启动命令只有重新启动文件才会从零开始被覆盖,如果使用命令清空文件,但由于服务没有停止运行,文件写入的指针没有改变会继续从原来指针写入,前面没有的内容会变成空行--这就是文件空洞,下载下来都是空行,这种方式启动若要清空日志,只有重启服务改变写入指针才能清空日志,如果不想重启服务就只能改变日志写入方式为追加

2、启动命令---追加模式

nohup java -jar test.jar >> test.txt 2>& 1 &

这种启动方式是追加方式,就是在原文件的后面追加,如果日志清空后就会在零的位置开始追加,

但是启动的时候如果原文件已经有内容,甚至几百M或者几个G会接着写入的,除非手动清空文件后才会从零追加,但这是我需要的效果,在不停止服务的情况下清空日志,再配上crontab 实现定时清空日志就非常完美了

3、定时清空日志

首先新建sh脚本文件 

#!/bin/sh
#清空日志文件
cat /dev/null > test.txt
#cat /dev/null > test1.txt
#cat /dev/null > test2.txt

赋予脚本执行权限 

chmod +x clear.sh

4.定时备份

添加定时任务 编辑crontab 

vim /etc/crontab

每天夜里3点执行清空任务

0 3 * * * root clear.sh

或者 每周日凌晨2点执行清空任务

0 2 * * sun root clear.sh

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值