1. 程式人生 > >shell指令碼自動清理伺服器日誌、圖片等資訊

shell指令碼自動清理伺服器日誌、圖片等資訊

在做效能測試的時候,linux伺服器時常會產生大量資料,如日誌資訊,圖片資訊,檔案資訊等,壓測一段時間後,導致伺服器磁碟空間暫滿而崩潰,每天手動清理比較麻煩,

利用shell指令碼自動清理,指令碼如下

1.刪除檔案命令:

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

例項命令:

find /home/weblogic/rc-server-tomcat-8081/logs -mtime +30 -name "*.txt" -exec rm -rf {} \;

說明:

將/home/weblogic/rc-server-tomcat-8081/logs目錄下所有30天前帶".txt"的檔案刪除。具體引數說明如下:

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

/home/weblogic/rc-server-tomcat-8081/logs:想要進行清理的任意目錄;

-mtime:標準語句寫法;

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

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

(籤購單介面效能測試時會產生大量籤購單圖片,並保持在對應的目錄下,導致磁碟經常被佔滿,自動清除前一天籤購單圖片,指令碼中,清除的格式改為.jpg就行)

-exec:固定寫法;

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

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

2.計劃任務:

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

2.1建立shell:

touch /home/weblogic/luojie/script/auto-del-30-days-txt.sh

chmod  777 auto-del-30-days-txt.sh

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

2.2編輯shell指令碼:

vi auto-del-30-days-txt.sh

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

#!/bin/sh
find /home/weblogic/rc-server-tomcat-8081/logs -mtime +30 -name "*.txt" -exec rm -rf {} \;

ok,儲存退出(:wq!)。

2.3計劃任務:

#crontab -e

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

輸入:

10 0 * * * /home/weblogic/luojie/script/auto-del-30-days-txt.sh >/dev/null 2>&1

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