まずはlogrotate.confファイルを編集し、以下の内容にする。
$ vi /*******/etc/logrotate.conf $ cat /*******/etc/logrotate.conf /*******/.*******/logs/***************.log { daily missingok rotate 100 }
その後にlogrotate.statusを作っておく。
$ touch /*******/lib/logrotate.status
実行テストを行う。-d オプションはdebugモード。confファイルにミスがあったり、statusファイルが存在しないとこのとき注意される。
$ /usr/sbin/logrotate -d -s /*******/lib/logrotate.status /*******/etc/logrotate.conf reading config file /*******/etc/logrotate.conf reading config info for /*******/.*******/logs/***************.log Handling 1 logs rotating pattern: /*******/.*******/logs/***************.log after 1 days (100 rotations) empty log files are rotated, old logs are removed considering log /*******/.*******/logs/***************.log log does not need rotating
実行すると、以下のようになる。これは成功した例。ただし、/*******/.*******/logs/***************.logがまだ1世代しかないので、ローテーションは行われていない。
$ /usr/sbin/logrotate -s /*******/lib/logrotate.status /*******/etc/logrotate.conf $ cat /*******/lib/logrotate.status logrotate state -- version 2 "/*******/.*******/logs/***************.log" 2011-2-7 $ ls -la /*******/.*******/logs/***************.log* -rw-r--r-- 1 **** **** 32324 2011-02-07 07:52 /*******/.*******/logs/***************.log
logroteteはデーモンではないので、実行するだけだとローテーションは1回しか行われない。これを定期的に実行するにはcronを使う。ここで1時間に1回実行させることも可能だが、その場合は-fオプションを使う。
$ crontab -e 0 0 * * * /usr/sbin/logrotate -s /*******/lib/logrotate.status /*******/etc/logrotate.conf