GNU/Linux >> Linux の 問題 >  >> Linux

Centos/Linux の logrotate をすべてのログの最大ファイル サイズに設定する

Zeeshan が述べたように、logrotate オプション sizeminsizemaxsize ローテーションのトリガーです。

それをよりよく説明するために。 logrotate は何度でも実行できますが、ファイルサイズに達したり、適切な時間が経過したりといったしきい値に達しない限り、ログはローテーションされません。

サイズ オプションは、ローテーションされたログが指定されたサイズであることを保証しません。指定したサイズに近づけるには、logrotate プログラムを十分頻繁に呼び出す必要があります。これは重要です。

ログ ファイルが非常に短時間で (たとえば、1 日に数百 MB) 蓄積される場合は、ログ ファイルを非常に大きくしたくない場合を除き、logrotate を頻繁に呼び出すようにする必要があります。これは重要です。

したがって、数ギガバイトのログ ファイルでディスクがいっぱいになるのを防ぐには、logrotate が十分な頻度で呼び出されるようにする必要があります。そうしないと、ログのローテーションが期待どおりに機能しません。

Ubuntu では、スクリプト /etc/cron.daily/logrotate を /etc/cron.hourly/logrotate に移動することで、時間単位のローテーションに簡単に切り替えることができます

または追加

*/5 * * * * /etc/cron.daily/logrotate 

/etc/crontab ファイルに。 5 分ごとに実行します。

size オプションは、毎日、毎週、毎月の時間オプションを無視します。しかし、minsize と maxsize はそれを考慮に入れます。

マニュアルページは少し混乱しています。これが私の説明です。

minsize ファイルが適切なサイズに達し、設定された期間が経過した場合にのみローテーションします。 例えば最小サイズ 50MB + 1 日 1 日の時間が経過する前にファイルが 50MB に達した場合、ファイルは翌日まで増加し続けます。

maxsize ログが設定されたサイズに達するか、適切な時間が経過するとローテーションします。 例えば最大サイズ 50MB + 毎日。ファイルが 50MB で、まだ翌日になっていない場合、ログはローテーションされます。ファイルが 20MB しかなく、翌日にロールオーバーする場合、ファイルはローテーションされます。

size ログ> サイズの場合にローテーションします。時間単位、日単位、週単位、月単位の指定に関係なく したがって、サイズが 100M の場合、つまり、ログ ファイルが> 100M の場合、この条件が true のときに logrotate が実行されると、ログがローテーションされます。ローテーションが完了すると、メイン ログは 0 になり、その後の実行では何も実行されません。

したがって、opの場合。具体的には、最大 50MB 以下のようなものを使用します:

/var/log/logpath/*.log {
    maxsize 50M
    hourly
    missingok
    rotate 8
    compress
    notifempty
    nocreate
}

つまり、最大 8 時間のログを作成することになります。そして、それぞれが 50MB を超えない 8 つのものがあります。彼は毎日数ギガバイトを取得していると言っており、それらがかなり一定の割合で蓄積され、maxsize が使用されていると仮定すると、各ファイルの最大値に近づくことになります。そのため、それぞれ 50MB 近くになる可能性があります。彼らが構築するボリュームを考えると、目標サイズを満たすのに十分な頻度で logrotate が実行されるようにする必要があります。

1 時間ごとに設定したので、少なくとも 1 時間ごとに logrotate を実行する必要があります。しかし、それらは 1 日あたり 2 ギガバイトと言うように蓄積されるため、50MB が必要です... 1 時間あたり 83MB の一定の速度を仮定します。したがって、1 時間ごとに logrotate を実行すると、maxsize を 50 に設定したにもかかわらず、83MB のログになることを想像できます。したがって、この例では、実行を 30 分ごとまたはそれ以下に設定するだけで十分です。

logrotate が 30 分ごとに実行されるようにします。

*/30 * * * * /etc/cron.daily/logrotate 

ログ ファイルのサイズを指定します 回転をトリガーします。例:size 50M ファイルのサイズが 50MB 以上になると、ログのローテーションがトリガーされます。サフィックス M を使用できます メガバイトの場合、k キロバイトの場合、G ギガバイトの場合。サフィックスが使用されていない場合は、バイトを意味します。最後に例を確認できます。利用可能なディレクティブは 3 つあります sizemaxsize 、および minsize .マンページによると:

minsize size
              Log  files  are  rotated when they grow bigger than size bytes,
              but not before the additionally specified time interval (daily,
              weekly,  monthly, or yearly).  The related size option is simi-
              lar except that it is mutually exclusive with the time interval
              options,  and  it causes log files to be rotated without regard
              for the last rotation time.  When minsize  is  used,  both  the
              size and timestamp of a log file are considered.

size size
              Log files are rotated only if they grow bigger then size bytes.
              If size is followed by k, the size is assumed to  be  in  kilo-
              bytes.  If the M is used, the size is in megabytes, and if G is
              used, the size is in gigabytes. So size 100,  size  100k,  size
              100M and size 100G are all valid.
maxsize size
              Log files are rotated when they grow bigger than size bytes even before
              the additionally specified time interval (daily, weekly, monthly, 
              or yearly).  The related size option is  similar  except  that  it 
              is mutually exclusive with the time interval options, and it causes
              log files to be rotated without regard for the last rotation time.  
              When maxsize is used, both the size and timestamp of a log file are                  
              considered.

以下に例を示します:

"/var/log/httpd/access.log" /var/log/httpd/error.log {
           rotate 5
           mail [email protected]
           size 100k
           sharedscripts
           postrotate
               /usr/bin/killall -HUP httpd
           endscript
       }

両方のファイルの説明は次のとおりです /var/log/httpd/access.log/var/log/httpd/error.log .サイズが 100k を超えるたびにローテーションされ、古いログ ファイルは (圧縮されていない) [email protected] にメールで送信されます。 削除されるのではなく、5回転を経た後。 sharedscripts postrotate という意味です スクリプトは、ローテーションされるログごとに 1 回ではなく、(古いログが圧縮された後に) 1 回だけ実行されます。このセクションの先頭にある最初のファイル名を二重引用符で囲むと、logrotate が名前にスペースを含むログをローテーションできることに注意してください。 , を使用して、通常のシェル引用規則が適用されます 、および \ 文字がサポートされています。


Linux
  1. Linux –ディレクトリ内のすべてのフォルダ/ファイルにデフォルトのファイル権限を設定するにはどうすればよいですか?

  2. Linuxでログファイルを空にする方法

  3. Linux用のAndroidファイル転送–サイズ制限なしでLinuxにファイルを送信

  1. システム ログ ファイル /var/log/messages が自動的に削除またはトリミングされる (CentOS/RHEL)

  2. Linux の最大 PID

  3. Linux test -a コマンド テストとは何ですか?

  1. Linuxlogrotateコマンドを使用してログをローテーションおよびアーカイブします

  2. Linux用の10個の便利なBashエイリアス

  3. Linux用のどのファイル圧縮ソフトウェアが最大のサイズ縮小を提供しますか?