Linux 下nginx 日誌按天分隔處理

2021-10-24 05:08:21 字數 1477 閱讀 5347

nginx 的日誌有2個檔案,分別為訪問日誌(access.log) 和錯誤日誌(error.log),訪問日誌會隨著訪問量的增加極速的變大,而且在一些雲服務的負載均衡下,後台內網也會不停的有訪問記錄,例如阿里雲(不知道在阿里雲後台有沒有設定的地方,沒去研究)。

而當訪問日誌太大,就會導致伺服器效能降低。

思路:每天凌晨1點將當前的日誌檔名稱加上日期,如 「access-20200902.log」,然後建立新的access.log.

一、用mv將原有的檔名稱加上當天日期

mv /usr/local/nginx-1.17.5/logs/access.log /usr/local/nginx-1.17.5/logs/access-`date +%y%m%d`.log

mv /usr/local/nginx-1.17.5/logs/error.log /usr/local/nginx-1.17.5/logs/error-`date +%y%m%d`.log

這裡有幾個要注意的關鍵點:

1.新增日期的格式(date +%y%m%d) : 以關鍵字date開頭,後面要加乙個空格,再寫上+和日期格式"%y%m%d%h%m%s"

2.日期格式前後的`是鍵盤上主數字鍵盤上最左邊的那個鍵,也就是esc下面和數字1鍵左邊的那個按鍵,即是~這個按鍵。

二、建立2個空的日誌檔案

touch /usr/local/nginx-1.17.5/logs/access.log /usr/local/nginx-1.17.5/logs/error.log
三、重新啟動nginx

/usr/local/nginx-1.17.5/sbin/nginx -s reload
這裡在錯誤日誌裡可能會有:signal process started 錯誤,解決辦法是先kill掉nginx ,然後再啟動nginx。    

pkill -9 nginx

/usr/local/nginx-1.17.5/sbin/nginx

四,建立乙個sh執行檔案:/home/logs.sh

vim /home/logs.sh   在其中寫入下面的**  

注意點:此檔案最好是通過linux的命令建立並寫入內容,如果在windows下建立並寫入內容,那麼在建立檔案後,檔名稱後面會有^m 標識,日誌就寫不進去了。

五、將logs.sh修改為可執行,(這一步關鍵)

執行命令 # chmod -r 777 /home/logs.sh

六、用crontab命令建立排程

例如每天凌晨1點執行上面的/home/logs.s**件

crontab -e

0 1 * * * /home/logs.sh

linux下nginx日誌按天分割

nginx的日誌檔案沒有rotate功能。一段時間過後,日誌將越發臃腫,乙個accesslog很快就突破2.5g,因此有必要通過指令碼實現按天切割日誌。1 將日誌檔案備份到 usr local nginx logs historylog目錄下,備份的檔名稱是access yyyymmdd.log和e...

按天切割nginx訪問日誌

1.新建切割日誌指令碼vi usr local nginx cut nginxlog.sh bin bash 日誌檔案存放目錄 logs path usr local nginx logs pid檔案 pid path usr local nginx nginx.pid 重新命名日誌檔案 mv ng...

nginx實現日誌按天切割

nginx的日誌檔案沒有rotate功能。一段時間過後,日誌將越發臃腫,乙個accesslog很快就突破1g,因此有必要通過指令碼實現按天切割日誌。1 重新命名日誌檔案,如更改為access yyyymmdd.log,需注意的是nginx通過檔案描述符定位日誌檔案,因此在重新命名之後還是能往該檔案內...