请教各位大佬,我有个 java 的应用,用的是nohup java -jar > logfile.log &
这样启动的,有时候日志文件比较大我想清理下,但是又不想停止应用,使用以下的几个方法
方法 1
cat /dev/null > logfile
方法 2
: > logfile
方法 3
cat "" > logfile
执行后发现日志文件里面的内容为空了,但是日志文件的大小没有任何变化。
大佬能告诉我是哪里出问题了么?有啥解决办法呢? 谢谢各位大佬!
暂时发现一个解决办法
修改启动命令为:nohup java -jar > logfile.log 2>&1 &
后就可以用那几种方式清空日志了
1
guyeu 229 天前
```shell
truncate -s 0 /path/to/logfile ``` :( 依然搞不明白 V2 评论区咋发源码。 |
5
yanqiyu 229 天前
是不是程序已经释放+重新打开了,要不去对应的 /proc/pid/fd/N 来 truncate 以下
|
6
chingyat 228 天前
truncate 应该是有效的,这不过程序已经打开的文件描述符不会自动 seek 到文件开头,当程序再次输出的时候,文件的大小还是会增加。这时候文件前面的部分应该是空洞。可以通过 ls -lsh logfile 比较。
|
7
tomychen 227 天前
touch newfile ;cp newfile /path/to/logfile
|
8
cnleon 227 天前
你是怎么确认文件大小没有变化的? ls ? du ?
|
11
keay250 220 天前
我一般是这么清空日志文件的
`echo > logfile` |