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

linux服务器上,我想减less几个大的日志文件的大小。 切断上半部分,也许第一百万行将工作。

这在面试中经常出现

你是否想在不中断进程的情况下截断文件? 日志文件中的任何信息是否有价值? 如果是这样,我通常用一个简单的bashstring“归零”文件。

: > /var/log/badlogfile

这出现在你可能有一个应用程序无法以受控方式重新启动的情况下。 假设这是一个金融交易应用程序,并且该交易date间程序不能停止或重新启动。 但是,由于应用程序错误,日志文件正在以某种恶劣的速度增长。 使用上面或下面的方法截断日志文件可以使系统保持运行。

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

你可以把它放在logrotate中,那么就不会轻易失控

如果它正在积极地写给你,你真的没有太多可以通过截断的方式来做。 您唯一的select是将文件空白(您可以先将其复制到别处)。

 echo "" >/var/log/fileYouWantToEmpty 

这样,文件结束为空,但仍然是相同的文件/ inode,所以它不会中断正在logging的程序。

你也可以尝试cat / dev / null> / var / log /。 但是,我必须警告/ dev / null没有在一些旧版本中实现…