有没有一种简单的方法来截断大日志文件?或者换句话说:如何仅查看日志文件的特殊内容。例如
- 如何从日志文件中提取最后 1000 行?
- 如何仅提取其中包含特殊字符串的行?
- 如何提取具有特殊日期/时间的日志文件?
我只知道tail
,但这个命令仅限于最后 10 行,而且速度太快了。在 8 GB 日志文件中搜索需要很长时间......
答案1
如何从日志文件中提取最后 1000 行?
tail -1000 file.log
如何仅提取其中包含特殊字符串的行?
grep special_string file.log
如何提取具有特殊日期/时间的日志文件?
我不确定我是否理解了这一点,您能详细说明一下吗?您具体需要做什么?
答案2
如何仅提取其中包含特殊字符串的行?
我只讲这一点。在 Solaris 或 HP-UX 系统上grep
,egrep
和fgrep
作为单独的文件存在,并且每个文件使用不同的算法。大多数 Linux 发行版只有 GNU grep 以及指向这 3 个名称中每一个名称的符号链接。如果您不必匹配其中包含元字符('.','*','?'等)的模式,只需匹配普通字符串,那么fgrep
无疑会运行得更快。即使fgrep
运行速度更快,8GB 的日志也需要处理大量文本。把它分成更小的、半千兆的文件怎么样?
答案3
如果您想执行一次,请使用grep
和tail
。
考虑使用logrotate
(from acron
来处理巨大的日志文件。您可以将其配置为按时间、大小、行数等分割日志。它非常方便和灵活。
答案4
还要考虑logwatch
或类似的东西来过滤掉重要的东西。