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
です。私が使用することをお勧めする別の2つのツールは、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
は、vimまたは他のテキストエディターで開くことができる、それぞれ5行の小さなファイルに分割されます
コマンドless
を使用します。 less
は、ファイルをメモリに読み込むより効率的な方法を使用します。同等のコマンドが2つあります:more
とmost
(最後にインストールする必要があるコマンド)。それらは単一のページをメモリに入れます。
しかし、検索の最良のオプションはgrep
を使用することです。例:
grep {searchstring} {file}
そして、logrotate
を見て、そのログを複数のファイルに広げます。
また、split
は現在のファイルを均等な部分に分割できるため、そのログを簡単に見ることができます。
それはあなたの目標が何であるかによります。
entireログファイルをスクロールする場合は、less
またはmore
コマンドを使用して、ファイルのページごとのビューを取得できます。
それ以外の場合、探しているファイルの場所がわかっている場合は、head
またはtail
コマンドを使用して、ファイルのセクション/抜粋を取得できます。正確な部品を検索する方法の詳細については、man head
およびman tail
を参照してください。
特定の文字列/エントリを探している場合は、grep
を使用してファイルの文字列を検索できます。目的に応じて、cat file | grep something
またはgrep something file
を使用できます。
あるいは、より高度な操作を行う場合は、必要に応じて、sed
またはawk
を使用して、より高度な操作を行うことができます。
必要な行が正確にわかっている場合は、grep
を使用します。ただし、不明なものを探している場合は、less
を使用することをお勧めします。コンテキストを表示するためです(ログファイルに特に便利です)。
less
内から/
コマンドを入力して、検索フィールドを開きます。必要なものを入力してEnterキーを押します。次に、同じWordの検索を続けるには、n
と入力して前に進み、N
と入力して後ろに進みます。ファイルの最後にジャンプするには、G
を入力してから、N
または?
を入力します。