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

文章讲述了如何使用nohup命令以覆盖和追加模式启动Javajar程序,并分析了这两种方式对日志文件的影响。覆盖模式下,清空文件需重启服务;追加模式则可在不停止服务时通过定时任务(crontab)配合清空脚本来实现日志的自动清理。

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

 

 

启动Javajar有多种方式,不同场景有不同的命令: - **Windows系统后台启动(适合生产环境,关闭命令行后仍运行)**:可以使用bat文件,内容如下: ```batch @echo off javaw -jar device-monitor-service-1.0-SNAPSHOT.jar exit ``` 将上述内容保存为一个 `.bat` 文件,运行该文件即可实现jar在后台运行 [^1]。 - **Windows系统项目停止命令**:可以使用以下bat文件(需和jar同目录),用来停止运行的Java程序: ```batch @echo off taskkill -f -t -im javaw.exe exit ``` 其扩展写法如下: ```batch @echo off chcp 65001 //可以在此处写其他命令,比如转文件位置 cd ..... java -Dfile.encoding=utf-8 -jar xxx.jar ``` [^2] - **Linux系统启动方式**: - **前台启动**:日志输出在当前窗口,退出当前窗口即关闭(不推荐),命令为: ```bash java -jar xxx.jar ``` - **后台启动日志输出到当前目录的nohup.out**: ```bash nohup java -jar xx.jar & ``` - **后台启动日志按天存储(每天备份并清空当前文件)**: ```bash nohup java -jar common-api.jar | /usr/local/cronolog/sbin/cronolog logs/console-%Y-%m-%d.out & ``` - **后台启动日志输出到指定文件**: ```bash nohup java -jar common.jar > log.out & ``` - **后台启动日志重定向到 /dev/null 中**:/dev/null代表Linux的空设备文件,所有往这个文件里面写入的内容都会丢失,命令为: ```bash nohup java -jar common.jar > /dev/null & ``` - **后台启动日志只输出错误信息,标准信息丢弃**: ```bash nohup java -jar common-api.jar >/dev/null 2>log.error & ``` [^3]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值