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
版权声明:本文为cscscssjsp原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。