清除大型Apache域日志

时间:2012-03-05 15:31:12

标签: linux apache

我遇到的问题是Apache日志在几台服务器上的比例越来越大(Linux CentOS 5)......我最终会完全禁用日志记录但是现在我需要快速修复以回收硬盘空间。

我尝试使用echo " " > /path/to/log.log* > /path/to/log.log,但由于日志大到100GB,所以它们耗时太长而且几乎崩溃了服务器

删除文件的速度很快但我的问题是,当我重新启动apache时会导致问题。我的服务器是实时的,充满了用户,所以我不能让它们崩溃。

感谢您的帮助。

3 个答案:

答案 0 :(得分:21)

使用truncate命令

truncate -s 0 /path/to/log.log

从长远来看,您应该使用logrotate来防止日志失控。

答案 1 :(得分:1)

试试这个:

cat /dev/null > /path/to/log.log

答案 2 :(得分:1)

 mv /path/to/log.log /path/to/log.log.1

执行此操作以进行访问,错误,如果您真的在prod上执行此操作,则会重写日志。 这不会影响Apache on * nix,因为该文件是打开的。然后重启Apache。是的,我知道我说重启,但这通常需要一秒左右,所以我怀疑有人会注意到 - 或者将其归咎于网络。重新启动的Apache将使用一组新的日志文件运行。

就您当前的日志而言,您需要保留至少过去3个月的错误日志和1个月的访问日志,但请查看您的音量以确定您每周的粗略音量错误和访问日志。 不要截断旧文件。如果有必要的话,可以将一条漂亮的尾巴用于gzip -c这些档案。如果你想使用--bytes=nnG选项拆分使用循环执行tail | head | gzip。好吧,你会分开奇数行,但这比你建议的那样删除批次要好。

当然,您可以像您和其他人一样建议删除该批次,但如果您意识到该网站最近遭到黑客攻击,您打算怎么做? “对不起:太迟了;我已经删除了证据!”

然后为了善良而实施logrotate制度。