ログサイズは55GBです。
私は試した:
cat logfile.log | tail
しかし、この方法は時間がかかります。大容量ファイルをより高速に読み取る方法や他の方法はありますか?
答え1
cat logifle.log | …
これは重複し、実際には速度低下を引き起こす。tail logfile.log
猫がいなければもっと意味があると思います!
はるかに速いから入力にならないとき閲覧可能tail
実行する必要があるのは、すべてのstdinを1行ずつ読み、最後の10行をバッファに保持することです。最後行10)入力がメカニズムをcat
介してパイプから出るようにすると、その入力を取得できません。
これは遅く、ファイルの行サイズがGBでない限り、非常に愚かです。最初の54.9GBをスキップしてください。残りの100MBは確かに最後の10行より少なくはありません! 100MBから最後の10行を取得するだけでも十分高速です。
tail --bytes 100M logfile.log | tail
しかし、GNU Coreutil1実装を使用している場合は、tail
すでにこれを行っています(つまり、ファイルの終わりから2.5kBを引いた部分を見つけてそこから探し始めます)。渡すいいえここで乱用するcat
が、tail
ファイル自体を読むようにしておくか、リダイレクトを使用すると、効果は同じです!より速い結果が得られます。
tail
1 GNU Coreutils、最新のbusyboxは私が確認した2つの実装です。 Stéphaneは、以下からオリジナルも同様であると指摘しています。1970年代のPWB Unixの実装完了しました。しかし、まだ実装の詳細にすぎません。
答え2
今のようにファイル全体を読むtail logfile
のではなく、ファイルの最後の10行を直接インポートする必要があります。cat logfile | tail
答え3
tail -nX path to your log file
X の場合、読みたい行数を使用します。
はい
tail -n30 /var/log/syslog
私の/var/log/syslogの最後の30行を表示
答え4
tac
を逆に使用できますcat
。しかし、10行に制限するのは難しいのでしないでください。tail
そんな用途だからぜひ使ってみてください。