Linux 使用 crontab 定時拆分日誌、清理過期文件

来源:https://www.cnblogs.com/bgyb/p/18119133
-Advertisement-
Play Games

@目錄前言簡介一、準備工作1.1 創建寫入腳本1.2 設置執行許可權1.3 添加定時任務1.4 配置生效二、Tomcat日誌 按每天分割2.1 創建一個 sh文件2.2 設置執行許可權2.3 設置crontab指令,指定每日定時任務2.4 配置生效總結 前言 請各大網友尊重本人原創知識分享,謹記本人博客 ...


@

目錄


前言

請各大網友尊重本人原創知識分享,謹記本人博客:南國以南i


提示:以下是本篇文章正文內容,下麵案例可供參考

簡介

在Linux中可以使用crontab來定時執行腳本。crontab是一個用於管理定時任務的工具,可以讓在特定的時間間隔內自動運行腳本或命令。

需求: 在Linux中每分鐘寫入一條信息到指定文件中,使用cron來定期執行一個寫入命令或腳本

在Linux中,定時執行腳本具有多種作用和用途,包括但不限於以下幾個方面:

  1. 自動化任務:定時執行腳本可用於自動化重覆性的任務。例如,定時備份數據、定時清理臨時文件、定時運行系統維護任務等。通過將這些任務腳本定期執行,可以減輕管理員的工作負擔,並確保任務按計劃執行,提高系統的可靠性和穩定性。
  2. 監控和報告:定時執行腳本可用於監控系統狀態、資源使用情況和日誌文件,並生成相應的報告。例如,定時檢查伺服器的CPU使用率、磁碟空間占用情況、網路連接狀態等,並將報告發送給管理員或其他相關人員。這樣可以幫助及時發現問題並採取適當的措施。
  3. 數據處理和分析:定時執行腳本可用於處理和分析數據。例如,定期從外部數據源獲取數據,並將其導入到資料庫中進行進一步處理和分析。這對於數據採集、數據清洗、數據轉換和數據分析等任務非常有用。
  4. 定時提醒和通知:定時執行腳本可用於生成提醒和通知。例如,定時發送電子郵件或簡訊提醒,以及生成日程安排或事件提醒。這對於個人、團隊或組織來管理任務、安排會議或發送重要通知非常有幫助。
  5. 自定義批處理任務:定時執行腳本可用於運行自定義的批處理任務。根據特定的需求和工作流程,你可以編寫腳本來執行一系列操作,如文件處理、數據轉換、編譯構建等。通過定時運行這些腳本,可以簡化複雜的工作流程並提高工作效率。

總之,定時執行腳本在Linux系統中具有廣泛的應用。通過利用定時任務,可以實現自動化、監控、報告、數據處理等各種任務,從而提高系統的可靠性、效率和管理效果

一、準備工作

1.1 創建寫入腳本

註意:首先,在home目錄下創建一個名為testscript.sh的腳本文件,並添加以下內容:

 #!/bin/bash
echo "This is a log message $(date)" > /home/out.log

在這個示例中,腳本會將一條帶有當前日期和時間的日誌消息附加到指定的日誌文件中。確保將/home/out.log替換為實際的日誌文件路徑。

保存並關閉文件。

1.2 設置執行許可權

註意:在執行腳本之前,確保為其設置執行許可權。在終端中運行以下命令:

chmod 755 /home/testscript.sh

1.3 添加定時任務

crontab表的每一行代表一個定時任務,定時任務語法格式如下:

* * * * * command
 
第一個*表示分鐘數(0-59)
第二個*表示小時數(0-23)
第三個*表示一個月中的第幾天(1-31)
第四個*表示月份(1-12)
第五個*表示一周中的第幾天(0-7,0和7都表示星期日)
command是要執行的命令或腳本

例如,要在每天的凌晨12點執行腳本,添加以下行到cron表中:
我們可以在 Crontab 的命令中添加重定向符號 ">>" 將輸出重定向到指定的文件中。例如:

crontab -l # 查看當前是否存在任務
crontab -e # 編輯 指定執行哪個腳本以及執行時間

# 每日凌晨執行腳本
0 0 * * * /home/testscript.sh >> /home/testscript.log 2>&1     

1.4 配置生效

service crond reload    //重新載入配置  前提是crond已經啟動

二、Tomcat日誌 按每天分割

2.1 創建一個 sh文件

創建腳本

#創建腳本
vim auto-deal-log.sh

腳本內容:

#! /bin/bash
echo "date is `date +%Y-%m-%d,%H:%M:%S`"
echo "tomcat-sca日誌分割"
sca_log_path=/home/admin/sca/tomcat-sca/logs
cp $sca_log_path/catalina.out $sca_log_path/catalina.`date +%Y-%m-%d`.log

# 清空tomcat預設日誌輸出文件
echo "" > $sca_log_path/catalina.out

echo "nginx日誌分割"
nginx_log_path=/home/admin/mid/nginx/logs
cp $nginx_log_path/access.log $nginx_log_path/access.`date +%Y-%m-%d`.log
cp $nginx_log_path/error.log $nginx_log_path/error.`date +%Y-%m-%d`.log
echo "" > $nginx_log_path/access.log
echo "" > $nginx_log_path/error.log


# 查找並清理不需要的文件
echo "清理tomcat*,保留30天"
find /home/admin/sca/tomcat*/logs/ -mtime +30 -name "*" -exec rm -rf {} \;
echo "清理batch日誌,保留30天"
find /home/admin/sca/log/batch/ -mtime +30 -name "*" -exec rm -rf {} \;
echo "清理xxl-job日誌,保留7天"
find /home/admin/sca/log/xxl-job/ -mtime +7 -name "*" -exec rm -rf {} \;
echo "清理auto-split-deal-log日誌,保留7天"
find /home/admin/sca/log/auto-split-deal-log/ -mtime +7 -name "*" -exec rm -rf {} \;
echo "清理視頻文件,保留5天"
find /home/admin/sca/ccrecord/ -mtime +5 -name "*.wev" -exec rm -rf {} \;
echo "日誌分割及清理完畢"

2.2 設置執行許可權

chmod +x auto-deal-log.sh

2.3 設置crontab指令,指定每日定時任務

# 每日凌晨執行分割日誌腳本
0 0 * * * /opt/sh/auto-deal-log.sh  >> /path/to/auto-deal-log.log 2>&1   

2.4 配置生效

service crond reload    //重新載入配置  前提是crond已經啟動

總結

我是南國以南i記錄點滴每天成長一點點,學習是永無止境的!轉載請附原文鏈接!!!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 上一篇介紹了 IL 指令的分類以及參數載入指令,該載入指令以ld開頭,將參數載入到棧中,以便於後續執行操作命令。本篇開始介紹參數存儲指令,其指令以st開頭,將棧中的數據,存儲到指定的變數中,以方便後續使用。 ...
  • 引言 在現代化的軟體開發中,單元測試和集成測試是確保代碼質量和可靠性的關鍵部分。ASP.NET Core 社區內提供了強大的單元測試框架,xUnit 是其中之一,它提供了簡單、清晰和強大的測試功能,編寫單元測試有許多優點;有助於回歸、提供文檔及輔助良好的設計。下麵幾節我們來深入淺出探討如何使用 xU ...
  • 隨著跨平臺應用的需求不斷增長,開發人員需要一種能夠在不同操作系統上運行的用戶界面(UI)框架。 Avalonia 是一種引人註目的選擇。在本文中,我們將深入瞭解 Avalonia 是什麼,它與 WPF 的區別,以及它的 UI 繪製引擎和原理、優點,以及一個簡單的示例代碼。 Avalonia 是什麼? ...
  • iNeuOS工業互聯網操作系統“表單設計”功能經過升級後,能夠適用於更多應用場景,從業務上來講可以擴展設備管理、MES等表單類的管理功能,從技術上來講可以支持資料庫單表應用、多級關聯表應用、可以自定義寫SQL語句等,現在支持22個基礎表單組件、9個高級表單組件。 ...
  • 本篇教程深入探討了 ILGenerator 中的參數載入指令,通過詳細解釋Ldarg、Ldarga、Ldloc和Ldloca等指令的使用,讀者能夠清晰地認識到Ld指令用於載入參數或本地變數到堆棧,而St指令用於將值從堆棧存儲到參數或本地變數中。這些指令為動態方法的生成提供了基礎,幫助開發者更好地掌握... ...
  • CSharpe線程 目錄CSharpe線程C#如何操作線程Thread1. Thread如何開啟一個線程呢?2. Thread中常見的API3. thread的擴展封裝threadpool一、 .NET Framework2.0時代:出現了一個線程池ThreadPool二、線程池如何申請一個線程呢? ...
  • 前面學習了一些Source Generators的基礎只是,接下來就來實踐一下,用這個來生成我們所需要的代碼。 本文將通過讀取swagger.json的內容,解析並生成對應的請求響應類的代碼。 創建項目 首先還是先創建兩個項目,一個控制台程式,一個類庫。 添加swagger文件 在控制台程式中添加F ...
  • 前言 本文將探討如何利用WPF框架實現樹形表格控制項,該控制項不僅能夠有效地展示覆雜的層級數據,還能夠提供豐富的個性化定製選項。我們將介紹如何使用WPF提供的控制項、模板、佈局、數據綁定等技術來構建這樣一個樹形表格。 一、運行效果 1.1預設樣式 1.2 自定義樣式 二、代碼實現 2.1 創建自定義控制項( ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...