實現nginx日誌按照時間分割存儲 backups_log.sh 將sh腳本加入到定時任務中,每天23:59執行 添加定時任務 註意事項: 1.在沒有執行kill -USR1 nginx_pid 之前,即便已經對文件執行了mv命令也只是改變了文件的名稱,nginx還是會向新命名的文件中照常寫入日誌數 ...
實現nginx日誌按照時間分割存儲
backups_log.sh
#設置log日誌的存儲地址 LOG_PATH=/home/soft/nginx/logs #設置歷史日誌的存儲地址 HISTORY_LOG_PATH=/home/soft/nginx/history_logs #獲取分割日誌時所需要的時間當做日誌文件名稱 TIME=$(date +%Y-%m-%d) #將當前日誌備份到指定存儲目錄 mv ${LOG_PATH}/access.log ${HISTORY_LOG_PATH}/access_log/${TIME}_access.log #發送信號重新打開日誌文件 kill -USR1 $(cat ${LOG_PATH}/nginx.pid)
將sh腳本加入到定時任務中,每天23:59執行
crontab -e
添加定時任務
59 23 * * * /home/sh/backups_log.sh
註意事項:
1.在沒有執行kill -USR1 nginx_pid 之前,即便已經對文件執行了mv命令也只是改變了文件的名稱,nginx還是會向新命名的文件中照常寫入日誌數據。原因在於linux系統中,內核是根據文件描述符來找文件的
2.添加定時任務後如果定時任務沒有起作用,則使用 ps -aux | grep cron 確認下服務是否已經開啟
3. -USR1 是進程間通信的信號中的一種,至於nginx進程接收到該信號做什麼操作是它內部定義的,除此之外我們可以使用 kill -l 確認liunx中包含哪些信號