設定日誌超過30天自動清除
一、查詢刪除
在專案目錄下建立shell檔案
# touch clear-log.sh// 建立clear-log.sh檔案 # chmod +x clear-log.sh//給clear-log檔案加可執行許可權
在新建立的檔案中加入指令碼
#!/bin/sh find /Users/lvmoumou/marry/log-storage/logs_store/ -mtime +30 -name "*.log" -exec rm -rf {} \;
其中+30代表查詢三十天前的檔案,-exec rm -rf {} ;是固定寫法,表示強制刪除包括目錄。下一步只需要在當前目錄下執行./clear-log.sh即可實現刪除30天前的日誌啦。
二、設定指令碼自動執行
有了第一步只完成了我們想要的一半內容,刪除可以了,如何設定自動刪除呢。
在終端輸入#crontab -e編輯自動執行任務。執行後輸入i,編輯任務命令,命令如下
50 10 * * * /Users/lvmoumou/marry/log-storage/clear-log.sh >/dev/null 2>&1
50,10代表在10點50分時執行/Users/lvmoumou/marry/log-storage/clear-log.sh這個檔案,後面的>/dev/null 2>&1
的前半部分>/dev/null
:表示標準輸出重定向到空裝置檔案,也就是不輸出任何資訊到終端,不顯示任何資訊。後半部分2>&1
:接著,標準錯誤輸出重定向到標準輸出,因為之前標準輸出已經重定向到了空裝置檔案,所以標準錯誤輸出也重定向到空裝置檔案。
這條命令的意思就是在後臺執行這個程式,並將錯誤輸出2重定向到標準輸出1,然後將標準輸出1全部放到/dev/null檔案,也就是清空.
所以可以看出" >/dev/null 2>&1 "常用來避免shell命令或者程式等執行中有內容輸出。