2009-07-10 4 views
1

何時間も実行されていたバッチジョブが実行されており、生成されているログファイルのサイズが非常に高速になり、 。別のプロセスで使用中のときに大きなテキストファイルをプログラムで空にします

コマンドラインには何か方法がありますか?そうでなければ、ファイルにハンドルを持つユーティリティを使ってテキストファイルを空にすることができますか?

私は仕事をやめたくないので、このファイルを使ってディスクスペースを解放したいと思っています。

Im on Vista、64 bit。

ご協力ありがとうございます。

答えて

1

これは、実際の仕事の仕方によって異なります。それが良い少年で、ログ情報がstdoutまたはstderrにパイプされている場合は、書き出したプログラムに出力をリダイレクトして、内容をディスクに書き込んでサイズを管理することができます。

ジョブのコードにアクセスできる場合は、各書き込み後にファイルを閉じるように指示することができます(追加することをお勧めします)。その後、実際にファイルを消去できるタイムスライスがあります。

あなたがどちらかを持っていなければ、少し難しいでしょう。誰かがファイルに対してオープンなハンドルを持っている場合は、アプリケーションの開発者にあなたにもっと良い解決策を見つけることを求めたり、ディスク容量を単純にクリアすることなく、IMOを行うことはあまりありません。

0

ログファイルの書き方によって異なります。ファイルハンドルには、次に書き込む場所のオフセットがあるため、ファイルの先頭だけを削除することはできません。最初の50MBを削除したにもかかわらず、まだ100MBのファイルに書き込んでいます。

ファイルの名前を変更して、新しいファイルを作成することをお勧めします。これは通常、ローリングログの動作方法です。

+0

ありがとうございます - ただし、別のプロセスで使用されているようにファイルの名前を変更することはできません – barfoon

0

ローリングログクラスを使用すると、通常のファイルクラスをラップしますが、ファイルが指定された最大サイズに達すると、自動的にファイルの先頭に戻ります。

これは非常にシンプルなラップです。あなた自身で書くか、オンラインで実装を試してみてください。

関連する問題