プログラムによって開かれ、継続的に記録される100MBのサイズに近いログファイルがあります。ファイルの最初の10MBを削除したいです。そのファイルのロギングプロセスに影響を与えずにこれを行う方法はありますか?
答え1
最初の10MBをスキップするには、次のものをdd
使用できます。
dd if=ORIGINAL_FILE of=10MB_LESS_FILE bs=512 skip=14880
その後、元のファイルが10MB_LESS_FILE
。
答え2
ファイルの先頭からデータを削除する方法はありません。 truncate 呼び出しは最後からデータを切り捨てることができますが、スペースをランダムに切り捨てるのとは異なります。
したがって、最善の方法は、不要な部分をスキップし、一番上にファイルをコピーすることです。
答え3
ファイルを記録し続ける前に、1つ以上のプロセスで開かれたファイルのinodeが変更されていないことを確認する必要があります。これを行うには、次の手順を実行します。
cp mylog mylog.new
< modify, trim or mangle `mylog.new` >
cp mylog.new mylog