各パーティションサイズが3 GBを超える2つのファイルがあるため、/var/log
ファイルを削除または移動せずに空き容量を確保する必要があります。これによりシステムがクラッシュする可能性があります。
また、何千もの行を削除することはできませんvi + dd
。
役に立つアイデアはありますか?
文書:
1-messages
2-私のWebサーバーのログファイル。
答え1
以下を使用するのとは異なり、rm
ファイルがまだ開いていても、ファイルを切り取ってディスク領域を解放できます。
> /var/log/big1.log
> /var/log/big2.log
しかし、まず別のシステムでテストしてみてください。ファイルのinode番号が変更されていることを確認してください。そうでなければ大丈夫です。
答え2
既存のファイルの内容全体を保存するには、そのファイルを別の一時スペースに圧縮し、圧縮されていない各ファイルを圧縮ファイルに置き換える必要があります。そうでない場合は、古いログファイルを削除するか、別の場所に保存してください。
以下は、コンテンツを失うことなくログファイルを圧縮するための提案です。ただし、ログファイルを増やすには、ファイルシステムがいっぱいになる問題を永久に解決するのではなく、遅らせるだけであることに注意してください。
圧縮する古いファイルを識別します。 (該当中は使用または開けません。今録音用。 )私の例ではこれですbig1.log
。
圧縮されていない最大のファイルを保存できるファイルシステムブロックを決定します。私の例では、これがだと仮定します/home
。
実際のシナリオでは、ループを使用してfor
一連のファイルを繰り返します。単一ファイルの手順は次のとおりです。
logfile='/var/log/big1.log' # The logfile to be compressed
if gzip -c "$logfile" >/home/log.gz
then
touch --reference "$logfile" /home/log.gz # Capture timestamp of last update
chown --reference "$logfile" /home/log.gz # Capture ownerships
chmod --reference "$logfile" /home/log.gz # Capture permissions
rm -f "$logfile" # Make space
mv -f /home/log.gz "$logfile.gz" # Rename with correct suffix
fi