1. 程式人生 > >kafka 系統日誌定時清理

kafka 系統日誌定時清理

每天定時清理kafka叢集server端3天前的系統日誌

寫清理指令碼,:

在/data1/kafka/kafka 目錄下新建檔案 auto-delete-kafka-3days-ago-log.sh 內容如下:

#!/bin/sh

find /data1/kafka/kafka/logs/ -mtime +3 -name "*.log" -exec rm -rf {} \;

注意:這個地方不要漏了 最後面的 分號 ;

命令末尾是 : 一對大括號+空格 +斜槓\和分號;  一個都不能少和錯。

crontab中加入定時任務,每天凌晨30分執行:crontab -e

輸入:

#每天凌晨30分定時清理kafka叢集三天前的log日誌

30 0 * * * /data1/kafka/kafka/auto-delete-kafka-3days-ago-log.sh

其實,這裡有坑。看到這個的朋友,可以試試有沒有效果,刪除的對不對。歡迎留言尋找正確的腳步。

清理指令碼參考:https://www.cnblogs.com/think-in-java/p/5712197.html

1.刪除檔案命令:

find 對應目錄 -mtime +天數 -name "檔名" -exec rm -rf {} \;

例項命令:

find /opt/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} \;

說明:

將/opt/soft/log/目錄下所有30天前帶".log"的檔案刪除。具體引數說明如下:

find:linux的查詢命令,使用者查詢指定條件的檔案;

/opt/soft/log/:想要進行清理的任意目錄;

-mtime:標準語句寫法;

+30:查詢30天前的檔案,這裡用數字代表天數;

"*.log":希望查詢的資料型別,"*.jpg"表示查詢副檔名為jpg的所有檔案,"*"表示查詢所有檔案,這個可以靈活運用,舉一反三;

-exec:固定寫法;

rm -rf:強制刪除檔案,包括目錄;

{} \; :固定寫法,一對大括號+空格+\+; 

 

2.計劃任務:

若嫌每次手動執行語句太麻煩,可以將這小語句寫到一個可執行shell指令碼檔案中,再設定cron排程執行,那就可以讓系統自動去清理相關檔案。

 

2.1建立shell:

touch /opt/soft/bin/auto-del-30-days-ago-log.sh

chmod +x auto-del-30-days-ago-log.sh

新建一個可執行檔案auto-del-30-days-ago-log.sh,並分配可執行許可權

 

2.2編輯shell指令碼:

vi auto-del-30-days-ago-log.sh

編輯auto-del-30-days-ago-log.sh檔案如下:

 

#!/bin/sh

find /opt/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} \;

 

ok,儲存退出(:wq)。

 

2.3計劃任務:

#crontab -e

將auto-del-30-days-ago-log.sh執行指令碼加入到系統計劃任務,到點自動執行

輸入:

10 0 * * * /opt/soft/log/auto-del-7-days-ago-log.sh

這裡的設定是每天凌晨0點10分執行auto-del-7-days-ago-log.sh檔案進行資料清理任務了。

完成以上三步,你就再也不每天惦記是否硬碟空間滿了,該清理日誌檔案了,再也不會受到伺服器硬碟空間不足的報警資訊了,放心的去看書喝咖啡去吧!