首先
如果主控端安裝了docker,他會在/etc/logrotate.d目錄下生成一個nginx的檔案
nginx和主控端環境沒啥差別,就是把那個執行的指令稍微改改就行了
PS:如果要看nginx的docker安裝 https://blog.csdn.net/wu__peng/article/details/90904409
1,copy一個這個檔案,改一個名字docker_nginx ,檔案内容如下,經過了稍微修改
(下面那個nginx_01,是我的容器名字,自己弄得時候改成自己的就行;
/home/nginx/logs是我的日志存放路徑。
)
/home/nginx/logs/*log {
su root root
create 0644 nginx nginx
daily
rotate 30
missingok
notifempty
compress
sharedscripts
postrotate
docker exec nginx_01 bash -c "if [ -f /run/nginx.pid ]; then kill -USR1 `docker exec nginx_01 cat /run/nginx.pid`; echo 日志打包完畢; fi"
endscript
}
2,檢測
logrotate -d -f /etc/logrotate.d/docker_nginx
3.執行(手動執行,不等到自動執行)
logrotate -f /etc/logrotate.d/docker_nginx
logrotate參數詳解:
daily #指定轉儲周期為每天
weekly #指定轉儲周期為每周;
monthly #指定轉儲周期為每月;
rotate count #指定日志檔案删除之前轉儲的次數,0指沒有備份,5指保留5個備份;
compress #通過gzip壓縮轉儲以後的日志;
nocompress #不需要壓縮時,用這個參數;
delaycompress #延遲壓縮,和compress一起使用時,轉儲的日志檔案到下一次轉儲時才壓縮;
nodelaycompress #覆寫delaycompress選項,轉儲同時壓縮;
copytruncate #用于還在打開中的日志檔案,把目前日志備份并截斷;
nocopytruncate #備份日志檔案但是不截斷;
create mode owner group #轉儲檔案,使用指定的檔案模式建立新的日志檔案;
nocreate #不建立新的日志檔案;
errors address #專儲時的錯誤資訊發送到指定的Email位址;
ifempty #即使是空檔案也轉儲,這個是logrotate的預設選項;
notifempty #如果是空檔案的話,不轉儲;
mail address #把轉儲的日志檔案發送到指定的E-mail地;
nomail #轉儲時不發送日志檔案;
olddir directory #轉儲後的日志檔案放入指定的目錄,必須和目前日志檔案在同一個檔案系統;
noolddir #轉儲後的日志檔案和目前日志檔案放在同一個目錄下;
prerotate/endscript #在轉儲以前需要執行的指令可以放入這個對,這兩個關鍵字必須單獨成行;
postrotate/endscript #在轉儲以後需要執行的指令可以放入這個對,這兩個關鍵字必須單獨成行;
tabootext [+] list #讓logrotate不轉儲指定擴充名的檔案,預設的擴充名是:.rpm-orig, .rpmsave,v,和~ ;
size size #當日志檔案到達指定的大小時才轉儲,Size可以指定bytes(預設)以及KB(sizek)或者MB(sizem);
postrotate <s> endscript #日志輪換過後指定指定的腳本,endscript參數表示結束腳本;
sharedscripts #共享腳本,下面的postrotate <s> endscript中的腳本隻執行一次即可;