我正在使用 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,也没有任何反应。终端挂起了。如果不升级我机器上的任何硬件(但我愿意安装软件),我如何打开文件并查看(我不需要编辑它,我只需要从中读取一些行)。
答案1
处理大型文件时,最好尽量减少要处理的信息量,有工具可以做到这一点。提到的一个工具是grep
搜索您需要的特定行。我建议使用的另外两个工具是和,tail
它们可以显示从文件顶部( )或从文件末尾( )head
开始的特定行数或字节数。如果您只需要读取文件的这些特定部分,而不需要读取中间部分,这很有用。head
tail
另一种方法是使用split
命令。它可以根据字节数或行数分解文件。例如,
$ mkdir SPLIT
$ cd SPLIT/
$ split -l 5 /etc/passwd
$ ls
xaa xab xac xad xae xaf xag xah xai xaj
现在,我的/etc/password
文件被分解成更小的文件,每个文件 5 行,你可以用 vim 或其他文本编辑器打开它们
答案2
使用命令less
。less
使用更高效的方式将文件读入内存。有 2 个等效命令:more
和most
(最后一个需要安装)。它们将单个页面放入内存。
但您最好的搜索选项是使用grep
。例如:
grep {searchstring} {file}
并查看logrotate
您是否将该日志跨越多个文件。
并且split
可以将您当前的文件分成相等的部分,以便您更轻松地查看该日志。
答案3
这取决于你的目标是什么。
如果你想滚动浏览全部的logfile,您可以使用less
或more
命令逐页查看手头的文件。
否则,如果您知道在文件中查找的位置,则可以使用head
或tail
命令来获取文件的某个部分/摘录。有关如何搜索精确部分的更多信息,请参阅man head
和。man tail
如果您要查找特定字符串/条目,您可以使用 在grep
文件中搜索您的字符串。您可以根据要执行的操作使用cat file | grep something
或。grep something file
或者,如果您想做一些更高级的事情,您可以考虑使用sed
或awk
进行更高级的操作(如果需要)。
答案4
如果您确切知道您想要哪条线,请使用grep
。但是,如果您正在寻找一些您不确定的东西,less
最好使用,因为它会向您显示上下文(这对于日志文件特别有用)。
/
在里面输入命令less
打开搜索字段。输入您想要的内容然后按回车键。然后要继续搜索同一个词,请输入n
向前 和N
向后。要跳转到文件末尾G
,请输入 ,然后N
或?
。