ログを1時間ごとにローテーションするようにlogrotateを設定するにはどうすればよいですか?


23

UnixおよびLinux管理ハンドブックよるとman、logrotateのはのためのオプションがありdailyweeklymonthly、そこに追加する方法ですhourlyオプションは?

このブログ記事は、あなたが設定することができます言及size 1し、時間のオプションを削除(例:daily)し、手動で呼び出すlogrotatecron-私のようなものを想定

logrotate -f /etc/logrotate.d/my-hourly-file

しかし、ログを1時間ごとにローテーションするためのよりエレガントなソリューションはありますか?


確かに。ご使用のオペレーティングシステム、バージョンは何ですか?
ニルス

ubuntu 10.04および11
cwd

回答:


20

ご使用のOSによります。一部の(すべて?)Linuxディストリビューションには、/etc/cron.hourly1時間ごとに実行されるcronジョブを配置できるディレクトリがあります。

他にはディレクトリがあり/etc/cron.d/ます。そこには、crontabエントリの通常のcron設定を持つ特別なユーザーとして実行されるcronジョブを置くことができます(そしてユーザー名を指定する必要があります)。

標準のログ回転スクリプトの代わりにこれらのいずれかを使用する場合は、/etc/cron.daily/そのスクリプトをcp /dev/null元の位置にコピーする必要があります。それ以外の場合は、logrotate patch-updateによって再アクティブ化されます。

適切な1時間ごとのローテーションのために、dateextディレクティブが設定されていないことにも注意してください。その場合、デフォルトでは、最初にローテーションされたファイルは、YYYYMMDDのような現在の日付の拡張子を取得します。その後、同じ日に2度目のlogrotateがアクティブになり、sizeしきい値を超えた場合でも単純にローテーションがスキップされます。

その理由は、ローテーションするファイルの新しい名前がすでに存在し、logrotateは既存の古いファイルにコンテンツを追加しないためです。たとえば、RHELおよびCentOSでは、dateextディレクティブはデフォルトでに指定されています/etc/logrotate.conf。その行を削除またはコメント化した後、ローテーションされたファイルは、rotate値に達するまで拡張子として連続した番号を取得するだけです。このようにして、1日に複数のローテーションを実行できます。


5

Nilsの答えに追加するためlogrotateに、DebianまたはUbuntuボックスでスクリプトの場所を変更する場合dpkg-divertは、ファイルをコピー/dev/nullして元の位置にコピーするよりも、おそらく次のように使用する方が安全です。

dpkg-divert --add --rename --divert /etc/cron.hourly/logrotate /etc/cron.daily/logrotate

私はこれについて知らなかったし、私は長年Ubuntuを使用しています。ありがとうございました。:)
Vaughany

2

もう1つのオプションは、logrotateコマンドをcrontabリストに追加することです。その後、1時間ごとに実行されます。

crontab -e

以下の行をcrontabリストに追加します

0 * * * * /usr/sbin/logrotate /etc/logrotate.d/my-hourly-file
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.