日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

圖文詳解nginx日志切割的實現_nginx

作者:BK_小小關 ? 更新時間: 2022-03-30 編程語言

實現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不是一個目錄則創

建$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?? 給腳本添加執行權限

《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? 執行腳本

《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,沒有變化,文件系統是根據Inode查找文件的。

2、如果此時將 Nginx服務重啟后,新產生的田志寫到哪兒?為什么?

答案:日志將會寫入到新的access.log文件中,因為重啟時會加載Nginx的配置文件,配置文件中是通過文件名指定日志的,所以會創建新的日志。

總結

原文鏈接:https://blog.csdn.net/m0_54434140/article/details/122489739

相關推薦

欄目分類
最近更新