我阅读了有关上述主题的几个问题,但我不确定他们是否真正回答了我的问题。
我正在运行一个应用程序,并将输出重定向到日志文件,即
nohup ./start.sh ./config/s.properties >./logs/app.log 2>&1 &
该文件现在大小为 80GB,我想删除它。这里的大多数答案都建议不要删除它,因为数据仍然会写入“已删除”文件中。答案建议改用 logrotate,但我想知道 logrotate 是否适用于重定向输出?
如果它确实有效,配置会是什么样子?我需要任何后旋转命令吗?我应该提到,我不可能停止并重新启动正在运行的应用程序,因此我只想“窃取”文件并让正在运行的应用程序写入新文件。
如果 logrotate 不是解决方案,我应该做什么 - 我再次无法停止并重新启动正在运行的应用程序 - 这样我就可以减少文件大小?
谢谢你的帮助!
PS:仅提一下该应用程序在 Debian8 64 操作系统上运行
答案1
如果在进程打开文件句柄时删除文件,Linux 会将内容保留在磁盘上,直到进程关闭文件句柄。如果你不想保留long现有的内容,你可以简单地截断它:
> ./logs/app.log
# or
truncate -s 0 ./logs/app.log
这应该清除文件的现有内容。