上記のトピックに関するいくつかの質問を読んでいますが、実際に私の質問に答えるのかどうかはわかりません。
アプリケーションを実行し、出力をログファイルにリダイレクトしています。
nohup ./start.sh ./config/s.properties >./logs/app.log 2>&1 &
現在のファイルサイズは80GBですが、削除したいです。ここにあるほとんどの回答はデータが「削除された」ファイルに記録され続けるため、削除しないことをお勧めします。答えは代わりにlogrotateを使用することを示唆していますが、logrotateが出力リダイレクトに機能するかどうか疑問に思います。
うまくいけば、構成はどのようなものでしょうか?回転後にコマンドが必要ですか?実行中のアプリケーションを停止して再起動することは不可能であるため、ファイルを「盗み」、実行中のアプリケーションに新しいファイルを書き込むようにしたいと思います。
logrotateが解決策ではない場合はどうすればよいですか?実行中のアプリケーションを停止して再起動できないため、ファイルサイズを縮小できますか?
助けてくれてありがとう!
PS:アプリケーションがDebian8 64オペレーティングシステムで実行されていることに注意してください。
答え1
プロセスがファイルハンドルを開いている間にファイルを削除すると、Linuxはプロセスがファイルハンドルを閉じるまでディスクの内容を保持します。 longの既存の内容を維持したくない場合は、簡単に切り取ることができます。
> ./logs/app.log
# or
truncate -s 0 ./logs/app.log
これにより、ファイルの既存の内容が消去されます。