正規表現に一致するsedストレージラインの-iオプションはどこにありますか?

正規表現に一致するsedストレージラインの-iオプションはどこにありますか?

私のサーバーのハードドライブの空き容量を解放しようと、sedを使用してログファイルの以前の日付を一致させましたが、縮小しましたが、私のルートパーティションは以前に使用した91の代わりに98%のスペースを使用しています。 %sedに電話しました。これでsed -i '/^Jan/ d' file.log私はログファイルを6Gから400Mに減らしました。一時ファイルまたは類似のファイルを検索しようとしていますが、find / -size +1G新しいファイルと一致しません。 編集する:echo -n > file.logサービスの競合を避けるためにこれを行いましたが、問題がまだ存在するため、これは一時的な現象です。

答え1

sedのオプションは--in-place実際にはファイルをその場で編集しないので、次のようになります。

if sed ... input > /tmp/output$$ ; then
    mv /tmp/output$$ input
else
    rm /tmp/output$$
fi

これは、コマンドを実行するmv前にディスクの入力ファイルサイズを倍増できることを意味します。ファイルシステムがいっぱいになると非常に非効率的になります。

より大きな問題は、ディスク容量が足りない場合、または/var/logと/tmpを/と同じパーティションにマウントし、/が小さいパーティションにある場合はそれを埋めることです。今そして次の一週間全体および次の週等。

ディスクがどのように設定されているかを確認してくださいmount。あなたが必要とする:df /tmpdf /var/log

  1. ディスクインストールの回復
  2. より大きなディスクを購入する
  3. 調査logrotate
  4. あまり記録しないでください
  5. または上記の組み合わせ

答え2

sed -iでstraceを実行すると、一時ファイルの場所が明確に表示されます。しかし、最も簡単な方法は-iを使用しないことです。スペースがあるパーティションのファイルに出力をリダイレクトします。

関連情報