圖文詳解nginx日志切割的實現
實現nginx的日志切割
(注:為什么要切割呢?因為當你用戶訪問量大的時候,可能日志也很大。)
《1》:ll /usr/local/nginx/logs/ 查看日志 (注:有兩個日志,一個是訪問日志,另一個是錯誤日志。)

《2》:tail -f /usr/local/nginx/logs/access.log 查看訪問日志

《3》:vim /opt/cut_nginx_log.sh 編寫一個腳本
《4》:腳本內容:
#!/bin/bash #cut_nginx_log.sh datetime=$(date -d "-1 day" "+%Y%m%d") log_path="/usr/local/nginx/logs" pid_path="/usr/local/nginx/logs/nginx.pid" [ -d $log_path/backup ] || mkdir -p $log_path/backup if [ -f $pid_path ] then mv $log_path/access.log $log_path/backup/access.log-$datetime kill -USR1 $(cat $pid_path) find $log_path/backup -mtime +30 | xargs rm -f else echo "Error,Nginx is not working!" | tee -a /var/log/messages fi

注釋:
#!/bin/bash #cut_nginx_log.sh datetime=$(date -d "-1 day" "+%Y%m%d")??????? //時間,date -d "-1 day"代表日期減1 log_path="/usr/local/nginx/logs"???????????? //日志的存放位置 pid_path="/usr/local/nginx/logs/nginx.pid"?? //進程的PID號,有PID號代表 進程還活著 [ -d $log_path/backup ] || mkdir -p $log_path/backup?? //如果$log_path/backup不是一個目錄則創(chuàng) 建$log_path/backup目錄 if [ -f $pid_path ]??????????????????????????????? //如果$pid_path是一個文件 then mv $log_path/access.log $log_path/backup/access.log-$datetime? //那么移動舊日志的文件到新目錄 下以此來實現分割 kill -USR1 $(cat $pid_path)??????????????????????????????????? //USR1代表信號,他會給進程傳一 個信號讓進程生成一個新的日志 find $log_path/backup -mtime +30 | xargs rm -f??????????????? //查找30天前的日志并刪除 else echo "Error,Nginx is not working!" | tee -a /var/log/messages? //否則提示nginx is not working且追加到日志中 fi
(注:kill 信號,信號有64種。)
《5》:chmod +x /opt/cut_nginx_log.sh 給腳本添加執(zhí)行權限
《6》:crontab -e 寫計劃任務
《7》:寫入
*/5???? *?????? *?????? *?????? *?????? /usr/sbin/ntpdate pool.ntp.org > /dev/null 2 >&1 0?????? 0?????? *?????? *?????? *?????? /opt/cut_nginx_log.sh

《7》:/opt/cut_nginx_log.sh 執(zhí)行腳本
《8》:ls /usr/local/nginx/logs 查看日志目錄下(注:下面中access.log是新的訪問日志,backup里面是老的訪問日志。)

《9》:ls /usr/local/nginx/logs/backup/ 查看

《10》:tailf /usr/local/nginx/logs/access.log 查看訪問日志(注:tailf 是等同tail -f的)
![]()
《11》:在瀏覽器中訪問
《11》:tailf /usr/local/nginx/logs/access.log 在去訪問,他下面會出現

面試題討論:
說明Nginx的訪問日志記錄在 access.log文件中。
1、如果將access.log重命名為a.log時,新產生的日志寫到哪兒?為什么?
答案:日志將會寫入到a.log 文件中,因為重命名后文件的 Inode,沒有變化,文件系統(tǒng)是根據Inode查找文件的。
2、如果此時將 Nginx服務重啟后,新產生的田志寫到哪兒?為什么?
答案:日志將會寫入到新的access.log文件中,因為重啟時會加載Nginx的配置文件,配置文件中是通過文件名指定日志的,所以會創(chuàng)建新的日志。
總結
到此這篇關于圖文詳解nginx日志切割實現的文章就介紹到這了,更多相關nginx日志切割內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Nginx HttpMemcModule和直接訪問memcached效率對比測試
2013-09-09
詳解Nginx服務器中HTTP Headers相關的模塊配置使用
這篇文章主要介紹了詳解Nginx服務器中HTTP Headers相關的模塊配置使用,包括ngx_http_headers_module與它的增強版ngx_headers_more的配置使用講解,需要的朋友可以參考下2016-01-01
503 service unavailable錯誤解決方案講解
這篇文章主要介紹了503 service unavailable錯誤解決方案講解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下2021-08-08
WordPress與Drupal的Nginx配置rewrite重寫規(guī)則示例
這篇文章主要介紹了WordPress與Drupal的Nginx配置重寫規(guī)則示例,文中介紹的rewrite寫法簡單而突出配置重點,需要的朋友可以參考下2016-01-01
Ubuntu?22.04.1?LTS?編譯安裝?nginx-1.22.1的配置過程
Ubuntu安裝Nginx有兩種方式,一種是通過命令的方式,這種方式安裝的Nginx版本低,之前漏掃掃出來Nginx版本低,需要升級所以現在用編譯的方式安裝版本高點的,本文介紹Ubuntu22.04.1?LTS編譯安裝nginx1.22.1的配置過程,本文給大家介紹的非常詳細,需要的朋友參考下吧2024-01-01

