最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Linux服務器使用Cron實現日志自動清理方案

 更新時間:2026年01月19日 08:34:04   作者:愛琴孩  
本文詳細介紹了如何使用find和cron組合實現Linux服務器日志的自動化清理,包括日志目錄分析、解決方案設計、實施步驟、驗證與測試以及find命令的詳細解析,需要的朋友可以參考下

一、背景問題

在生產環(huán)境中,隨著服務持續(xù)運行,日志文件會不斷累積,占用大量磁盤空間。以某開發(fā)測試服務器為例:

  • 日志目錄/data/logs
  • 服務數量:100+ 個微服務
  • 磁盤占用:28G
  • 待清理文件:24267 個(超過 7 天)

如果不及時清理,可能導致磁盤空間不足,影響服務正常運行。

二、日志目錄分析

2.1 目錄結構

/data/logs/
├── cas_logs/                    # CAS認證服務日志
├── nginx/                       # Nginx日志
├── ttpt_cas/                    # 平臺CAS日志
├── yyzx_testservice_logs/       # 測試服務日志
├── ... (100+ 服務目錄)
├── spring.log                   # 散落的日志文件
└── spring.log.2025-12-31.log

2.2 日志文件命名規(guī)則

通過分析,發(fā)現日志文件主要有以下幾種命名格式:

格式示例
服務名-YYYY-MM-DD-HH-序號.logcas-2022-01-04-11-1.log
服務名.log.YYYY-MM-DD.logttpt_gmservice_logs.log.2026-01-08.log
access_log.YYYY-MM-DD.logaccess_log.2026-01-08.log
*.gz壓縮后的歷史日志

三、解決方案設計

3.1 技術方案

使用 find + cron 組合實現自動化日志清理:

  • find 命令:按文件類型和修改時間篩選日志文件
  • cron 定時任務:每天定時執(zhí)行清理腳本
  • 日志記錄:記錄每次清理操作,便于追溯

3.2 安全措施

安全措施說明
目錄限制只在 /data/logs 目錄下操作
文件類型限制只刪除 *.log*.log.*、*.gz 文件
只刪文件使用 -type f,不刪除目錄
時間限制只刪除 7 天前的文件(-mtime +7
操作日志記錄每次清理的時間和文件數量

四、實施步驟

4.1 創(chuàng)建腳本目錄

mkdir -p /data/scripts

4.2 創(chuàng)建清理腳本

創(chuàng)建文件 /data/scripts/clean_old_logs.sh

#!/bin/bash
#
# 日志清理腳本 - 刪除7天前的日志文件
# 每天早上9點由cron定時執(zhí)行
# 
# 安全措施:
# 1. 只在 /data/logs 目錄下操作
# 2. 只刪除日志文件(*.log, *.log.*, *.gz)
# 3. 只刪除文件,不刪除目錄
# 4. 記錄清理日志
#
?
LOG_DIR="/data/logs"
DAYS=7
SCRIPT_LOG="/data/scripts/clean_logs_history.log"
?
# 確保只在 /data/logs 目錄下操作
if [ ! -d "$LOG_DIR" ]; then
    echo "$(date '+%Y-%m-%d %H:%M:%S') - 錯誤: 目錄 $LOG_DIR 不存在" >> "$SCRIPT_LOG"
    exit 1
fi
?
# 記錄開始時間
echo "$(date '+%Y-%m-%d %H:%M:%S') - 開始清理 ${DAYS} 天前的日志文件..." >> "$SCRIPT_LOG"
?
# 統(tǒng)計將要刪除的文件數量
COUNT=$(find "$LOG_DIR" -type f \( -name "*.log" -o -name "*.log.*" -o -name "*.gz" \) -mtime +$DAYS 2>/dev/null | wc -l)
?
# 刪除日志文件
find "$LOG_DIR" -type f \( -name "*.log" -o -name "*.log.*" -o -name "*.gz" \) -mtime +$DAYS -delete 2>/dev/null
?
# 記錄完成
echo "$(date '+%Y-%m-%d %H:%M:%S') - 清理完成,共刪除 $COUNT 個文件" >> "$SCRIPT_LOG"

4.3 賦予執(zhí)行權限

chmod +x /data/scripts/clean_old_logs.sh

4.4 配置 Cron 定時任務

# 添加定時任務(每天早上9點執(zhí)行)
(crontab -l 2>/dev/null | grep -v "clean_old_logs.sh"; echo "0 9 * * * /bin/bash /data/scripts/clean_old_logs.sh") | crontab -
?
# 驗證是否添加成功
crontab -l

Cron 表達式說明

0 9 * * * /bin/bash /data/scripts/clean_old_logs.sh
│ │ │ │ │
│ │ │ │ └── 星期幾 (0-7, 0和7都表示周日)
│ │ │ └──── 月份 (1-12)
│ │ └────── 日期 (1-31)
│ └──────── 小時 (0-23)
└────────── 分鐘 (0-59)

五、驗證與測試

5.1 預覽待刪除文件

# 查看將被刪除的文件數量
find /data/logs -type f \( -name "*.log" -o -name "*.log.*" -o -name "*.gz" \) -mtime +7 2>/dev/null | wc -l
?
# 查看部分文件列表
find /data/logs -type f \( -name "*.log" -o -name "*.log.*" -o -name "*.gz" \) -mtime +7 2>/dev/null | head -20

5.2 手動執(zhí)行測試

# 執(zhí)行清理腳本
/bin/bash /data/scripts/clean_old_logs.sh
?
# 查看清理記錄
cat /data/scripts/clean_logs_history.log
?
# 查看磁盤使用變化
du -sh /data/logs

5.3 查看 Cron 執(zhí)行日志

# 查看系統(tǒng) cron 日志
tail -f /var/log/cron
?
# 查看清理歷史記錄
cat /data/scripts/clean_logs_history.log

六、find 命令詳解

6.1 核心參數說明

參數說明
-type f只匹配文件,不匹配目錄
-name "*.log"匹配文件名模式
-o邏輯或,連接多個匹配條件
-mtime +7修改時間超過 7 天
-delete刪除匹配的文件
2>/dev/null忽略權限不足等錯誤信息

6.2 時間參數對比

參數含義
-mtime +7修改時間 > 7 天前
-mtime 7修改時間 = 7 天前
-mtime -7修改時間 < 7 天前(7 天內)
-atime訪問時間
-ctime狀態(tài)改變時間

七、排除或指定目錄清理

7.1 如何排除某些目錄不清理?

在 find 命令中添加 -not -path 參數:

find "$LOG_DIR" -type f \
    -not -path "*/kafka-logs/*" \
    -not -path "*/nginx/*" \
    \( -name "*.log" -o -name "*.log.*" -o -name "*.gz" \) \
    -mtime +$DAYS -delete

7.2 如何只清理特定服務的日志?

修改 LOG_DIR 或添加路徑過濾:

# 只清理特定服務
LOG_DIR="/data/logs/yyzx_testservice_logs"
?
# 或使用通配符匹配多個服務
find /data/logs/yyzx_* -type f -name "*.log" -mtime +7 -delete

八、總結

本方案通過 find + cron 實現了服務器日志的自動化清理:

項目配置
清理目錄/data/logs
保留天數7 天
執(zhí)行時間每天 09:00
清理記錄/data/scripts/clean_logs_history.log

核心優(yōu)勢

  • ? 自動化執(zhí)行,無需人工干預
  • ? 安全限制,避免誤刪重要文件
  • ? 操作留痕,便于問題追溯
  • ? 配置靈活,易于調整參數

以上就是Linux服務器使用Cron實現日志自動清理方案的詳細內容,更多關于Linux Cron日志自動清理的資料請關注腳本之家其它相關文章!

相關文章

  • Ubuntu安裝scrcpy完成手機投屏和控制(Ubuntu用QQ微信的另一種方法)

    Ubuntu安裝scrcpy完成手機投屏和控制(Ubuntu用QQ微信的另一種方法)

    這篇文章主要介紹了Ubuntu安裝scrcpy手機投屏和控制(Ubuntu用QQ微信的另一種方法),這樣的話不用頻繁在鍵盤和手機間切換了 ,需要的朋友可以參考下
    2019-10-10
  • linux引導系統(tǒng)的方法分析

    linux引導系統(tǒng)的方法分析

    這篇文章主要介紹了linux引導系統(tǒng)的方法,總結分析了Linux引導系統(tǒng)相關原理、操作命令與注意事項,需要的朋友可以參考下
    2020-03-03
  • KLOXO重置管理員登陸密碼的方法分享

    KLOXO重置管理員登陸密碼的方法分享

    今天準備整理面板的配置問題的,登陸密碼忘記了,郁悶不已。我們只有通過SSH來重置KLOXO初始密碼
    2012-09-09
  • Linux使用fdisk進行磁盤的相關操作

    Linux使用fdisk進行磁盤的相關操作

    fdisk?命令是?Linux?中用于管理磁盤分區(qū)的強大文本實用程序,這篇文章主要為大家詳細介紹了如何使用fdisk進行磁盤的相關操作,需要的可以了解下
    2025-01-01
  • ubuntu下安裝Python多版本的方法及注意事項

    ubuntu下安裝Python多版本的方法及注意事項

    倒霉的今天我居然把ubuntu系統(tǒng)給完壞了,因為我把python3卸載了,然后就哦了,下面小編給大家分享下ubuntu下管理python的多個版本的方法,本文給大家介紹的非常詳細,感興趣的朋友一起看下吧
    2016-10-10
  • centos7中firewall防火墻命令詳解

    centos7中firewall防火墻命令詳解

    本篇文章主要介紹了centos7中firewall防火墻命令詳解,具有一定的參考價值,有需要的可以了解一下。
    2016-11-11
  • Linux之httpd啟動或重啟報錯問題及解決

    Linux之httpd啟動或重啟報錯問題及解決

    文章提供了一個解決HTTPD服務配置錯誤的步驟,包括查看日志、使用systemctl命令檢查服務狀態(tài)、定位并注釋錯誤配置行,最終成功重啟服務
    2026-04-04
  • ubuntu如何開啟ssh遠程登錄

    ubuntu如何開啟ssh遠程登錄

    在Ubuntu上開啟SSH遠程登錄的步驟如下:檢查SSH安裝情況、啟動SSH服務、設置開機啟動、檢查SSH狀態(tài)、配置防火墻、并使用SSH客戶端進行遠程登錄
    2025-03-03
  • 基于Ubuntu 18.04配置固定IP的方法教程

    基于Ubuntu 18.04配置固定IP的方法教程

    最近新裝的Ubuntu 18.04還是不習慣,但還是要努力適應,下面這篇文章主要給大家介紹了關于基于Ubuntu 18.04配置固定IP的方法教程,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-08-08
  • 在Linux系統(tǒng)上刷新DNS緩存的方法

    在Linux系統(tǒng)上刷新DNS緩存的方法

    DNS是互聯(lián)網的一項服務,它作為將域名和 IP 地址相互映射的一個分布式數據庫,能夠使人更方便地訪問互聯(lián)網,而不用記住能夠被機器直接讀取的 IP 數串,但是,有時候我們可能需要刷新或清除 DNS 緩存,本文將詳細介紹如何在Linux系統(tǒng)上刷新DNS緩存,需要的朋友可以參考下
    2024-06-06

最新評論

泰来县| 元阳县| 唐山市| 焦作市| 天等县| 东乌| 新田县| 富蕴县| 利川市| 宣汉县| 阿克陶县| 廊坊市| 壶关县| 青岛市| 株洲市| 繁昌县| 徐汇区| 城步| 洛扎县| 浑源县| 沾益县| 霍邱县| 安平县| 固原市| 资中县| 惠州市| 怀柔区| 光泽县| 瑞丽市| 巴林右旗| 铜梁县| 三都| 龙岩市| 阿鲁科尔沁旗| 云阳县| 桃源县| 泾阳县| 涞水县| 五常市| 榆社县| 乌鲁木齐市|