我正在使用 Ubuntu 14.04。我有一个很大的日志文件:
-rw-r--r-- 1 rails root 1792390124 Jan 10 14:54 /var/log/unicorn/unicorn.log
尽管如此,我需要打开它并在其中找到一些东西。我试过vim,但正在运行
vim /var/log/unicorn/unicorn.log
只是打开一个空白屏幕,即使我使用Ctrl+ C,也没有任何反应。终端挂起。如果不升级我机器上的任何硬件(但我愿意安装软件),我如何打开文件并环顾四周(我不需要编辑它,我只需要从中读取一些行)。
在处理大文件时,最好尽量减少要处理的信息量,并且有相应的工具。已经提到的一种工具是
grep
搜索您需要的特定行。我推荐使用的另外两个工具是tail
,head
它们可以显示从文件顶部(head
)或文件末尾(tail
)开始的特定行数或字节数。如果您只需要读取文件的那些特定部分,而在两者之间什么都不需要,这将很有用。另一种方法是使用
split
命令。它可以根据字节数或行数分解文件。例如,现在,我
/etc/password
的文件被分解成更小的文件,每行 5 行,您可以使用 vim 或其他文本编辑器打开它们使用命令
less
。less
使用更有效的方式将文件读入内存。有 2 个等效命令:more
和most
(您需要安装的最后一个)。那些将单页放入内存。但是您搜索的最佳选择是使用
grep
. 例子:并查看一下,
logrotate
以便您跨越多个文件的日志。并且
split
可以将您当前的文件分成相等的部分,这样您就可以更轻松地查看该日志。这取决于你的目标是什么。
如果要滚动浏览整个日志文件,可以使用
less
或more
命令获取手头文件的逐页视图。否则,如果您知道要在文件中查找的位置,则可以使用
head
ortail
命令来获取文件的部分/摘录。有关如何搜索精确零件的更多信息,请参阅man head
和。man tail
如果您正在寻找特定的字符串/条目,您可以使用
grep
在文件中搜索您的字符串。您可以使用cat file | grep something
或grep something file
取决于您想要做什么。或者,如果你想做一些更高级的事情,你可以考虑使用
sed
或awk
更高级的操作,如果需要的话。如果您确切知道您想要哪条线路,请使用
grep
. 但是如果你正在寻找一些你不确定的东西,那么使用less
会更好,因为它会显示你的上下文(这对日志文件特别有用)。从内部键入
/
命令less
以打开搜索字段。输入你想要的然后按回车。然后要继续搜索相同的单词,请键入n
前进和N
后退。要跳转到文件类型的末尾G
,然后N
或?
。