在UNIX中,减小正在主动写入的海量日志文件的大小的最佳方法是什么?


11

在Linux服务器上,我想减小几GB大的日志文件的大小。切断上半部分,或者说前一百万行是可行的。

Answers:


12

这经常出现在面试中...

您是否希望在不中断流程的情况下截断文件?日志文件中的任何信息有价值吗?如果是这样,我通常使用简单的bash字符串将文件“归零”。

: > /var/log/badlogfile

当您的应用程序无法以受控方式重新启动时,就会出现这种情况。假设这是一个金融交易应用程序,并且在交易日内该程序无法停止或重新启动。但是,由于应用程序错误,日志文件正以令人讨厌的速度增长。使用上面或下面的方法截断日志文件可以保持系统运行。

另请参阅:http : //www.cyberciti.biz/faq/truncate-large-text-file-in-unix-linux/


1
冒号应该指示提示,还是实际上输入到命令中?
菲尔(Phil)

冒号是命令的一部分。
ewwhite 2011年

您实际上不需要冒号。
MikeyB 2011年

这是没有操作的。不需要它,但是当我提出建议时,我喜欢保留它。
ewwhite 2011年

这对我不起作用,日志的大小没有变化。它变为0,但随后又恢复到完整大小
thouliha

2

您可以将它放到logrotate中,这样就不会轻易失去控制


最终,这需要发生。我是这份工作的新手……
Phil

1

如果正在积极地写信给您,那么实际上您可以通过截断来做很多事情。唯一的选择是清空文件(您可以先将其复制到其他位置。)

echo "" >/var/log/fileYouWantToEmpty

这样,文件最终将为空,但仍然是相同的文件/索引节点,因此不会破坏正在记录的程序。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.