2018年1月15日 星期一

[linux] Nginx logrotate 設置


設置完 Nginx 的 access log 後,
接著使用 logrotate 設置 log 的壓縮

在 vim /etc/logrotate.d/nginx

  /data/logs/*log {
daily rotate 10 missingok notifempty compress sharedscripts postrotate /bin/kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid 2>/dev/null) 2>/dev/null || : endscript }
daily 表示每天做 logrotate
rotate 10 只保留 rotate 10 份
missingok 當 log file 不存在時,還是繼續執行。
notifempty 當 log 為空時,不 rotate
compress 壓縮 使用gzip
sharedscripts 表示當所有log都rotate 完,以後再執行這個 script。
postrotate 中 kill -USR1 的目的是使重新 reopen nginx log file 。

The master process can handle the following signals:
TERM, INTQuick shutdown
QUITGraceful shutdown
KILLHalts a stubborn process
HUP
Configuration reload
Start the new worker processes with a new configuration
Gracefully shutdown the old worker processes
USR1Reopen the log files
USR2Upgrade Executable on the fly
WINCHGracefully shutdown the worker processes
kill -USR1 参数详解 - 阅心笔记 https://www.52os.net/articles/kill-USR1-meanning.html

如果,想要馬上執行看看呢
logrotate -f /etc/logrotate.d/ngnix

然後就可以
cat cat /var/lib/logrotate.status | grep "/data/logs/" 看看有沒有執行的紀錄。

沒有留言:

張貼留言