次のアクセスログ設定があります。
cat /etc/logrotate.d/logrotate_nginx.conf
/nginx/access/logs/*.log {
rotate 2
size 1k
missingok
compress
notifempty
copytruncate
}
時間間隔設定はありません。
これは、1KiloByte に達した後、「/nginx/access/logs/」でログを回転させることを意味します。そうですか?
しかし、今はログの回転です。
/ # ls -l /nginx/access/logs/
total 8
-rw-r--r-- 1 root root 1264 Jun 24 11:17 nginx-access.log
-rw-r--r-- 1 root root 1292 Jun 24 11:17 nginx-access_withbody.log
-rw-r--r-- 1 root root 0 Jun 24 11:16 nginx-error.log
これは logrotate.status です。
/ # cat /var/lib/logrotate.status
logrotate state -- version 2
"/var/log/acpid.log" 2019-6-24-11:0:0
"/mnt/mesos/sandbox/logs/nginx-error.log" 2019-6-24-11:0:0
"/mnt/mesos/sandbox/logs/nginx-access.log" 2019-6-24-11:0:0
"/mnt/mesos/sandbox/logs/nginx-access_withbody.log" 2019-6-24-11:0:0
なぜ回転しないのか知りたいです。問題がconfにある場合。文書によると
このオプションは相互です。 間隔オプションとは相互排他的で、ログが発生します。 時間条件の後に指定すると、回転するファイルは最後の回転時間を考慮しません。
答え1
埋め込まれたファイルを見ると、ログがlogrotate.status
最後に回転した時間が11:00のように見えます。ディレクトリリストを見ると、それ以降にファイルが更新されたことを確認できます。
logrotate
これは、ジョブが毎時間実行されることを意味します。ログ循環ジョブが再実行または手動で実行されると、ログは循環する必要があります。
答え2
Alpine Linuxでは、cronはデフォルトで起動しません。したがって、どのフォルダのジョブも実行されません。解決策はcronを起動することですcrond