天天看點

Linux應用總結:自動删除n天前日志

  linux 是一個很能自動産生檔案的系統,日志、郵件、備份等。雖然現在硬碟廉價,我們可以有很多硬碟空間供這些檔案浪費,讓系統定時清理一些不需要的檔案很有一種 爽快的事情。不用你去每天惦記着是否需要清理日志,不用每天收到硬碟空間不足的報警短信,想好好休息的話,讓我們把這個事情交給機器定時去執行吧。

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

  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 >/dev/null 2>&1

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

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

<b> 原文釋出時間為:2013-04-07</b>

<b>本文來自雲栖社群合作夥伴“linux中國”</b>

繼續閱讀