最佳实践:如何维护/轮换日志文件(来自重定向输出)

最佳实践:如何维护/轮换日志文件(来自重定向输出)

我阅读了有关上述主题的几个问题,但我不确定他们是否真正回答了我的问题。

我正在运行一个应用程序,并将输出重定向到日志文件,即

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

这应该清除文件的现有内容。

相关内容