viで大容量ストレージログファイルを開く

viで大容量ストレージログファイルを開く

AIXパーティションにストレージ・ログがあります。 viコマンドを使用してファイルを編集しようとすると、次のメッセージが表示されます。ex: 0602-101 Out of memory saving lines for undo delete lines

ファイルを読み取るためにファイル制限を拡張したくありません。代わりに、ファイルサイズを減らすためにいくつかの行を削除したいと思います。

ファイルの最後の10,000行を除いてすべて削除するように指定するにはどうすればよいですか?

私はこれが正しいアプローチだと思いますが、うまくいきません。1,$-10000d

答え1

変える削除Viを使用して、最後の10000行を除くすべての行を新しいファイルでフィルタリングします(通常は望まない場合)編集するとにかくログファイル)。

$ tail -n 10000 logfile >logfile.tail

必要に応じて次のようlogfileに置き換えることができます。logfile.tail

$ mv logfile.tail logfile

ログファイルに書き込むプログラムの中には、プログラムが終了するまで書き込み用にログファイルを開いたままにしておくことができるため、古いログファイルがより短いバージョンに置き換えられても、新しいメッセージが古いログファイルに書き込まれる可能性があります。これらのログメッセージは失われます。

この問題を解決するには:

$ cat logfile.tail >logfile

これはカット logfile(削除せずに消去)その内容をlogfile.tail。これはlogfile、書き込み機能がオンになっているプログラムからのメッセージが失われないことを意味します。

また、ログファイルが大きくなりすぎるのを防ぐために、自動ログファイル循環機能の一種を導入することも検討してください。

関連情報