ログサイズが増加した後、ログを回転させるために、次のように1M
cronjobが15分ごとに呼び出されます。logrotate
0,15,30,45 * * * * /usr/sbin/logrotate /app/syslog-ng/custom/conf/syslog-ng-rotate.conf
syslog-ng-rotate.conf
どこ
/app/syslog-ng/custom/output/all_devices.log {
size 1M
copytruncate
dateext
dateformat -%Y%m%d-%s
rotate 365
sharedscripts
compress
postrotate
/app/syslog-ng/sbin/syslog-ng-ctl reload
endscript
}
1M
ただし、ファイルサイズが15分以内の場合、上記の設定は機能しません。
ファイルサイズに達するとすぐにファイルを回転させるにはどうすればよいですか1M
?
ベストアンサー1
logrotate は実行を指示した場合にのみ実行されます。ログファイルが急速に増加する可能性があり、cronを使用している場合は、次の2つの提案があります。
クローンジョブをより頻繁に(たとえば、1分ごとに)スケジュールします。
* * * * * /usr/sbin/logrotate /app/syslog-ng/custom/conf/syslog-ng-rotate.conf
これにより、サイズ制限に達する前にログファイルが大きくなるまでに最大60秒かかります。
ログファイルがまだ1分あたりに急速に増えている場合は、logrotateを毎分数回実行し、次の手順を実行します。
* * * * * /usr/sbin/logrotate /app/syslog-ng/custom/conf/syslog-ng-rotate.conf; /usr/sbin/logrotate /app/syslog-ng/custom/conf/syslog-ng-rotate.conf; /usr/sbin/logrotate /app/syslog-ng/custom/conf/syslog-ng-rotate.conf
(たとえば)または:
* * * * * /usr/sbin/logrotate /app/syslog-ng/custom/conf/syslog-ng-rotate.conf; sleep 10; /usr/sbin/logrotate /app/syslog-ng/custom/conf/syslog-ng-rotate.conf; sleep 10; /usr/sbin/logrotate /app/syslog-ng/custom/conf/syslog-ng-rotate.conf
...logrotate呼び出しの間に10秒。ノート単一のクローン操作が60秒以上かかることを望まない。それ以外の場合は、次のクローン操作と重なります。完全なcronジョブを次にラップすることを検討してください
timeout
。* * * * * timeout 59 sh -c "/usr/sbin/logrotate /app/syslog-ng/custom/conf/syslog-ng-rotate.conf; sleep 10; /usr/sbin/logrotate /app/syslog-ng/custom/conf/syslog-ng-rotate.conf; sleep 10; /usr/sbin/logrotate /app/syslog-ng/custom/conf/syslog-ng-rotate.conf"
ご使用の環境に合わせてlogrotateを呼び出そうとする時期と回数をログファイルを制御する必要があります。