nginx 日誌切割

nginx的日誌文件沒有rotate功能。若是你不處理,日誌文件將變得愈來愈大,還好咱們能夠寫一個nginx日誌切割腳原本自動切割日誌文件。linux

第一步就是重命名日誌文件,不用擔憂重命名後nginx找不到日誌文件而丟失日誌。在你未從新打開原名字的日誌文件前,nginx仍是會向你重命名的文件寫日誌,linux是靠文件描述符而不是文件名定位文件。nginx

第二步向nginx主進程發送USR1信號。bash

nginx主進程接到信號後會從配置文件中讀取日誌文件名稱,從新打開日誌文件(以配置文件中的日誌名稱命名),並以工做進程的用戶做爲日誌文件的全部者。ide

從新打開日誌文件後,nginx主進程會關閉重名的日誌文件並通知工做進程使用新打開的日誌文件。spa

工做進程馬上打開新的日誌文件並關閉重名名的日誌文件。日誌

而後你就能夠處理舊的日誌文件了。進程

nginx日誌按日期自動切割腳本以下:crontab

#nginx日誌切割腳本it

#author: wzio

#!/bin/bash

logs_path="/opt/logs/"

pid_path="/opt/run/nginx.pid"

#重命名日誌文件

mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday"+"%Y%m%d").log

#向nginx主進程發信號從新打開日誌

kill -USR1 `cat ${pid_path}`

crontab 設置做業

0 0 * * * (/bin/bash /opt/nginx/sbin/cut_nginx_log.sh)>/dev/null 2>&1這樣就天天的0點0分把nginx日誌重命名爲日期格式,並從新生成今天的新日誌文件

相關文章
相關標籤/搜索