私のサーバーには複数のログファイルがありますが、サイズを100 MBに制限したいと思います。月に一度実行され、各ログファイルから最も古い文字(最上部に最も近い)を削除して、各ログファイルのサイズを100 MB以下にするcronジョブを作成しようとしています。どうすればいいですか?
答え1
月に一度実行され、各ログファイルから最も古い文字(最上部に最も近い)を削除して、100 MBごとにサイズを縮小するクローンジョブを作成しようとしています。
このアプローチにはいくつかの問題がある可能性があるため、まずロギングプロセスが正しく機能していることを確認し、この方法でファイルを編集してもロギングを続行してください。ファイルハンドルを開いたままにしておくと、これはおそらく悪い考えです。
ログを管理する一般的な方法はを使用することですlogrotate
。ただし、この方法には潜在的な問題があることに注意してください。一部のアプリケーションは、ログファイルの交換に正しく応答しません。システムロガーは実際にこのカテゴリに属し、新しいログを再度開くには回転後にシグナルを受け取る必要があります。
標準出力または標準エラーに書き込むことができる場合、プロセスの中断を防ぐための同様のオプションは、以下を使用することです。パイプラインログ。 Pipelogはプロセスとログファイルの間の仲介者として機能するため、何も中断または中断することなくログを回転または削除するように指示することができます。
> someprocess | pipelog someprocess.logfile &
[pipelog 5334] Using 'someprocess.logfile' as a log file.
その後、パイプログSIGUSR1:を送信してログを回転させるkill -s USR1 5334
か、それを削除してSIGUSR2を使用して新しいログを開始できます。
答え2
を使用すると、logrotate
必要に応じてログを回転して圧縮します。システムですでに実行されている可能性が高いので、/etc/logrotate.dにファイルを作成してlogrotateにログを処理する方法を教えてください。仕様についてはmanファイルを確認してください。
答え3
man split
お手伝いします。特に-b
旗です。