请教各位大佬,我有个 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 2024-04-15 20:37:06 +08:00 ```shell truncate -s 0 /path/to/logfile ``` :( 依然搞不明白 V2 评论区咋发源码。 |
5 yanqiyu 2024-04-15 22:31:36 +08:00 是不是程序已经释放+重新打开了,要不去对应的 /proc/pid/fd/N 来 truncate 以下 |
![]() | 6 chingyat 2024-04-15 22:55:51 +08:00 truncate 应该是有效的,这不过程序已经打开的文件描述符不会自动 seek 到文件开头,当程再次输出的时候,文件的大小还是会增加。这时候文件前面的部分应该是空洞。可以通过 ls -lsh logfile 比较。 |
![]() | 7 tomychen 2024-04-17 19:13:16 +08:00 touch newfile ;cp newfile /path/to/logfile |
![]() | 8 cnleon 2024-04-17 21:49:49 +08:00 你是怎么确认文件大小没有变化的? ls ? du ? |
11 keay250 2024-04-24 11:28:02 +08:00 我一般是这么清空日志文件的 `echo > logfile` |