[ホーム] - [Redhat Linux 7 FAQ 一覧] - [logrotate を手動で実行する方法]



logrotate を手動で実行する方法

環境:Redhat Enterprise linux 7(EL)




ログをローテーションする


logrotateはログをローテートする機能です。ログファイル(主にソフトウェアの動作ログやエラーログ)を記録するファイルです。ログはどんどん記録されているので、放置しておくと巨大なファイルになります。場合によっては数ギガに膨れ上がります。よって通常はローテートにより「日にち単位に分割する」「三か月を経過したログは削除する」などの処理が行われます。これをローテート(循環)機能と呼びます。

redhat のlogrotate 機能は/var/log 以下に記録されるログを毎日、週次、月次などでファイルを分離する機能です。
一つのファイルに永遠と記録し続けるとファイルが肥大化して扱いにくくなったり、ディスク容量圧迫の原因となるため、ローテートし、期限が過ぎたログは自動的に削除されるということです。

基本は cron に従い実行されます。テストする場合などはその時刻まで我慢して待つのではなく、すぐにコマンドで実行したい場合もあるでしょう。そんな場合のコマンドの紹介です。


(1)ローテートをテストします。実際にはローテートは行われません。

logrotate -dv /etc/logrotate.d/vsftpd



-d は debug モード、 -v で詳細モードです。


(2)以下コマンドは実際にローテートを実行します。

logrotate -f /etc/logrotate.d/vsftpd




エラーメッセージ


-d オプションにより手動で実行しても以下のメッセージで失敗する場合があります。


#logrotate -d /etc/logrotate.d/syslog
log does not need rotating



以下のような原因が館がられます。


・ログファイルが存在しない。(missingokを指定していない場合)
・最後にローテーションを実施してから日数が経過していない
 /var/lib/logrotate.status を修正することでローテートが可能になる場合あり。
・一度もローテーションが実行されていない。
・maxsizeに到着していない
・「logrotate /etc/logrotate.d/syslog」でうまく動作しない場合は「logrotate /etc/logrotate.conf」を実行する。
・設定ファイルのパーミッションや実行ユーザを確認する。(特に非rootの場合)

(*)ログファイルが空の場合もローテートする設定の場合は以下のメッセージが表示される。


empty log files are rotated, old logs are removed



参考:
crontab -e と /etc/crontab の違い




(*)本ページは Redhat Enterprise Linux 7.2以後を想定しています。

最終更新日:2018/11/21



[ホーム] - [ Redhat Linux 7 FAQ 一覧]


本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。) Copyright(c) tooljp.com 2007-2018