主頁 > 作業系統 > linux服務器,nginx日志切割保存

linux服務器,nginx日志切割保存

2023-05-26 15:26:14 作業系統

我們都知道,默認情況下,nginx的專案log是一直被累計寫入的,隨著時間越久,那么這個檔案就會越大,這個時候如果我們要去做一些查找和排查就會比較困難,因為日志檔案太大,操作起來比較費勁,

因此我們為了規避這個問題,提出日志切割的方案,

那日志切割的原理是怎么樣的,我們來分析一下,我們先統計下連續10天的日志檔案情況

-rw-r--r-- 1 nginx root   60M May 1 10:28 xxx.com.access.log
-rw-r--r-- 1 nginx root   100M May 2 10:28 xxx.com.access.log
-rw-r--r-- 1 nginx root   200M May 3 10:28 xxx.com.access.log
-rw-r--r-- 1 nginx root   500M May 4 10:28 xxx.com.access.log
-rw-r--r-- 1 nginx root   800M May 5 10:28 xxx.com.access.log
-rw-r--r-- 1 nginx root   1G May 6 10:28 xxx.com.access.log
-rw-r--r-- 1 nginx root   1.5G May 7 10:28 xxx.com.access.log
-rw-r--r-- 1 nginx root   2G May 8 10:28 xxx.com.access.log
-rw-r--r-- 1 nginx root   2.5G May 9 10:28 xxx.com.access.log
-rw-r--r-- 1 nginx root   2.9G May 10 10:28 xxx.com.access.log

我們可以發現,日志每天都在變大,時間越久,就越大,那么我們切割,應該按照什么規則來切割呢?

一般情況下,我們都是按日期來切割,例如:

xxx.com.access.log20230501的日志保存為一個檔案,表示5-1的日志,

xxx.com.access.log20230502的日志保存為一個檔案,表示5-2的日志,

xxx.com.access.log20230503的日志保存為一個檔案,表示5-3的日志,

,,,,,,

也就是每天的日志保存一個檔案,至于保存多久,根據實際情況而定,3天,10天,30天,60天,更久都可以,只是保留的天數越多,檔案個數就越多而已

理解了這個思路,那么我們接下來要做的事情就是從xxx.com.access.log里面把指定日期的日志提取出來并單獨保存為一個檔案,我們使用腳本來實作:

#!/bin/bash
# Nginx日志切割

# 在/data/log/nginx目錄下生成類似xxx.log20230526格式的日志,并保留前30天資料
# 創建計劃任務,每天0點0分執行:0 0 * * * /data/script/nginx_log_rotation.sh

#你的日志所在目錄 LOG_PATH
=/data/logs/nginx

#你的nginx服務運行的pid檔案 PID
=/usr/local/nginx/logs/nginx.pid

#昨天的日期 YESTERDAY
=`date -d "yesterday" +%Y-%m-%d`
#因為日志目錄里面可能有多個專案,這里我們使用回圈讀取的方式
for i in `find ${LOG_PATH} -maxdepth 1 -type f|grep -v '[0-9]$'`; do mv $i $i${YESTERDAY} done
#重新生成一個新的日志檔案,用來保存新的資料 kill
-USR1 `cat ${PID}`
#洗掉創建時間在30天以前的日志檔案 find ${LOG_PATH}
-mtime +30 -name "*[0-9][0-9]" | xargs rm -f exit 0

通過試驗,我發現上面標紅那句話說的不是很準確,因此來糾正一下

05-20專案上線,不管是什么時間點,早上,上午,下午,還是晚上都一樣,xxx.com.access.log持續寫入日志,那么這些日志的日期肯定都是05-20

然后05-21 00:00:00的時候執行一次腳本,通過mv命令把xxx.com.access.log日志(日期全是05-20)重命名為xxx.com.access.log20230520,并重新生成了一個空的xxx.com.access.log檔案,用于繼續寫入日志,此時再寫入的日志的日期已經是05-21了

然后05-22 00:00:00的時候執行一次腳本,通過mv命令把xxx.com.access.log日志(日期全是05-21)重命名為xxx.com.access.log20230521,并重新生成了一個空的xxx.com.access.log檔案,用于繼續寫入日志,此時再寫入的日志的日期已經是05-22了

然后05-23 00:00:00的時候執行一次腳本,通過mv命令把xxx.com.access.log日志(日期全是05-22)重命名為xxx.com.access.log20230522,并重新生成了一個空的xxx.com.access.log檔案,用于繼續寫入日志,此時再寫入的日志的日期已經是05-23了

,,,,,,

以此內推,結論是:每日凌晨0點把前一天的日志檔案按日期重命名,并生成一個新的日志檔案,用來寫入當天的日志,而不是剛開始理解的按日期去xxx.com.access.log里面提取指定日期的日志了,

當然了,在重命名檔案的時候,同步寫入資料日期可能是第二天的資料(也就是xxx.com.access.log20230520檔案里面最后一條資料是05-21的),或者資料丟失的情況,我們可以忽略不計哈,

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/553489.html

標籤:Linux

上一篇:深度決議 slab 記憶體池回收記憶體以及銷毀全流程

下一篇:返回列表

標籤雲
其他(159757) Python(38169) JavaScript(25456) Java(18129) C(15231) 區塊鏈(8268) C#(7972) AI(7469) 爪哇(7425) MySQL(7213) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5873) 数组(5741) R(5409) Linux(5343) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4576) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2434) ASP.NET(2403) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1977) 功能(1967) Web開發(1951) HtmlCss(1948) C++(1922) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1878) .NETCore(1862) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • linux服務器,nginx日志切割保存

    我們都知道,默認情況下,nginx的專案log是一直被累計寫入的,隨著時間越久,那么這個檔案就會越大,這個時候如果我們要去做一些查找和排查就會比較困難,因為日志檔案太大,操作起來比較費勁。 因此我們為了規避這個問題,提出日志切割的方案。 那日志切割的原理是怎么樣的,我們來分析一下,我們先統計下連續1 ......

    uj5u.com 2023-05-26 15:26:14 more
  • 深度決議 slab 記憶體池回收記憶體以及銷毀全流程

    在上篇文章 [《深入理解 slab cache 記憶體分配全鏈路實作》](https://mp.weixin.qq.com/s?__biz=Mzg2MzU3Mjc3Ng==&mid=2247488152&idx=1&sn=7c65f8ee28e9cc14a86e9df92b6d2b93&chksm=c ......

    uj5u.com 2023-05-26 15:25:12 more
  • 容器編排器們的自我介紹

    哈嘍大家好,我是咸魚 咸魚在《[一文帶你了解容器技術的前世今生](https://mp.weixin.qq.com/s?__biz=MzkzNzI1MzE2Mw==&mid=2247484578&idx=1&sn=a8ae0d1c470351a8bbcb6891bae0ca23&chksm=c293 ......

    uj5u.com 2023-05-25 11:13:55 more
  • 容器編排器們的自我介紹

    哈嘍大家好,我是咸魚 咸魚在《[一文帶你了解容器技術的前世今生](https://mp.weixin.qq.com/s?__biz=MzkzNzI1MzE2Mw==&mid=2247484578&idx=1&sn=a8ae0d1c470351a8bbcb6891bae0ca23&chksm=c293 ......

    uj5u.com 2023-05-25 10:58:52 more
  • linux yum安裝

    目錄 一、yum安裝 二、yum安裝分類 三、yum命令 四、實驗 一、yum安裝 yum:1.基于rpm升級,彌補rpm只能一個一個安裝依賴檔案 2.yum可以自動安裝依賴檔案。 3.從倉庫中下載包 centos8:使用yum或者dhf(兩種命令格式基本一致,檔案格式.rpm) ubuntu:使用 ......

    uj5u.com 2023-05-24 07:44:05 more
  • linux nfs共享存盤服務

    目錄 一、nfs服務 二、nfs優點 三、組態檔 四、共享檔案配置程序 五、實驗 1.創建共享檔案(兩臺終端共享) 一、nfs服務 概念:網路上共享檔案系統的協議,運行多個服務器之間通過網路共享檔案和目錄 服務端:將指定目錄標記為共享目錄,服務段有訪問權限,共享目錄有全部權限 客戶端:通過nfs協 ......

    uj5u.com 2023-05-24 07:38:08 more
  • linux ssh遠程登錄

    目錄 一、ssh概念 二、組態檔 三、ssh組成結構 四、遠程控制程序 五、遠程復制 六、配置密鑰 七、wraooers防火墻 一、ssh概念 ssh:一種安全通道協議 功能:1.實作字符界面遠程登錄 2.遠程復制 3.ssh協議是對通信對方的資料傳輸進行加密出來,包括用戶口令(安全性) 4.客戶 ......

    uj5u.com 2023-05-24 07:30:21 more
  • Linux入門

    # 概述 Linux本質是一個OS,圖示是一只企鵝,叫Tux。 Linux發行版本: - Red Hat:收費版 RHEL(Red Hat Enterprise Linux),免費版 fedora(實驗版) 和 **CentOS**。 - debian?ubantu?Linux Mint,都免費。 ......

    uj5u.com 2023-05-23 06:51:14 more
  • 【Linux】(小白向)詳解VirtualBox網路配置-配置Linux網路

    本文時間 2023-05-18 作者:sugerqube漆瓷 本文面向新手,重在理解會舍棄不少精密的理論,還請大佬們見諒。 本文目標:成功使用ssh工具登錄linux,同時linux能連接外網。 網路基礎 關于局域網 ==一切網路的目的:為了鏈接兩臺計算機== 知識點1:每臺物理機應該有一個ip地址 ......

    uj5u.com 2023-05-19 07:51:20 more
  • 虛擬機linux系統密碼忘記了該怎么辦?

    當你的linux系統的密碼忘記了該怎么辦? 首先不要慌,重啟電腦,開機的時候 出現這個頁面的時候點擊e然后出現這個頁面 把里面的ro修改為 rw 修改為rw之后在這一行陳述句的最后面輸入enforcing=0 init=/bin/bash,然后ctrl加x進入單機模式, 進入單機模式之后,輸入修改密碼 ......

    uj5u.com 2023-05-19 07:50:55 more