一、爲什麼要定時清理log文件?
實際工作中,我們部署到服務器的應用可能隨時在寫入日誌,有的應用一天產生的日誌就較大,但是磁盤空間有限,所以磁盤常常很快就處於用完狀態,並由此產生一些問題,比如服務器上應用可能掛掉,影響生產。
二、如何清理log文件?
估摸着時間就去看看磁盤刪刪log文件??顯然不科學,,這裏記錄一個高效的方法:編寫Linux定時任務腳本,自動清理log日誌文件。
1、創建shell腳本文件並賦予執行權限:
[root@aigoV_66 ~]# touch auto_del_sjjk_log.sh //創建shell文件
[root@aigoV_66 ~]# chmod +x auto_del_sjjk_log.sh //賦予文件執行權限
關於 chmod +x 命令 :
Linux下不同的文件類型,其文件名有不同的顏色:
藍色表示目錄,綠色表示可執行文件,紅色表示壓縮文件,淺藍色表示鏈接文件,灰色表示其它文件。
新建的shell文件只是一個灰色的普通文件。
執行 chmod +x 命令,此時文件變成了綠色,有了可執行權限。
若再使用 chmod -x 命令,就去除了執行權限。
2、編輯剛創建的shell腳本文件,寫入刪除命令:
[root@aigoV_66 ~]# vi auto_del_sjjk_log.sh
#!/bin/sh
find git_workspace/xny/數據接口/target/log/ -mtime +2 -name "*.log.*" -exec rm -rf {} \;
~
~
~
-- INSERT --
關於上面命令:
vi xx.sh :
編輯xx.sh 腳本文件。
進入編輯區後,按i鍵開始編輯,編輯完按Esc鍵,然後鍵入冒號:,再輸入wq,回車保存退出。
刪除命令部分:
find 查找命令,查找指定文件。
git_workspace/xny/數據接口/target/log/ 需要清理的文件的目錄位置。
-mtime 標準語句寫法
+2 數字指代天數,即刪除2天以前的 -name "*.log.*" -exec rm -rf {} \;
-name "*.log.*" 目標文件類型
-exec 固定寫法
rm -rf 強制刪除包括目錄在內的文件
例: rm -rf abc 將 abc 子目錄及子目錄中所有檔案刪除,並且不用確認 :
{} \; 固定寫法
3、將上面shell文件添加到Linux定時任務腳本
[root@aigoV_66 ~]# crontab -e //進入定時任務編輯頁面(編輯保存方法同上)
0 23 * * * /root/syncsystemtime.sh
05 01 * * * sh /root/project/rm.sh
0 01 * * * /root/auto_del_sjjk_log.sh //每日凌晨一點執行該刪除日誌的腳本文件
~
~
~
~
~
"/tmp/crontab.zvmT2t" 3L, 106C
進過上面一番操作後,服務器會在每日凌晨一點自動執行清理日誌的操作。