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
、書き込み機能がオンになっているプログラムからのメッセージが失われないことを意味します。
また、ログファイルが大きくなりすぎるのを防ぐために、自動ログファイル循環機能の一種を導入することも検討してください。