測試環境redis持久化到硬碟報錯,發現是因為硬碟空間不夠導致。去尋找占用空間較大的任務,發現flink日誌檔案佔了70%容量,在此之前在測試環境沒有對flink日誌進行維護和刪除。為了以後自動維護日誌檔案,需要寫乙個能夠定時執行任務的shell指令碼。
思路:① 每日凌晨執行指令碼,刪除一周之前的那一天的日誌。
此方法的好處是可以指定日期刪除,
shell指令碼如下
#!/usr/bin/sh
source /etc/profile
source ~/.bash_profile
date_str=
`date -d "7 days ago" +%y-%m-%d`
rm_path=/home/flink/flink-1.9.0/log/flink-flink-taskexecutor-*-p2bdap12.log$.txt
echo
$rm_path
rm -rf $rm_path
核心是使用date自動生成日期。關於date,有如下知識點:
-d引數 ,說明要顯示的是後面的字串表示的時間,「1 day ago」 說明是1天前bai的時間。
date "+%y-%m-%d %h-%m-%s "這樣才是顯示時間 +後都是時間格式。例如:
date +%y%m%d //顯示前天年月日
date +%y%m%d --date="+1 day" //顯示前一天的日期
date +%y%m%d --date="-1 day" //顯示後一天的日期
date +%s //從 1970 年 1 月 1 日 00:00:00 utc 到目前為止的秒數(時間戳)②使用方案1的缺陷是,第一次執行指令碼時,只能刪除之前第7天的檔案,再往前的檔案無法刪除。顯而易見,將要刪除的檔名賦值給rm_path,然後執行rm -rf即可。
可以使用find,查詢出符合時間和命名規則的檔案。
引用:linux中find使用
#!/usr/bin/sh
source /etc/profile
source ~/.bash_profile
find /home/flink/flink-1.9.0/log/ -mtime +7 -type f -name "flink-flink-taskexecutor-*-p2bdap12.log*.txt" -exec rm -f \;
在使用find時遇到兩個坑:
① 執行腳本報錯:find: 路徑必須在表示式之前:flink-flink-taskexecutor-1-p2bdap12.log2020-11-19.txt
解決方案:將檔名用""括起來
②執行腳本報錯:find: 遺漏「-exec」的引數
解決方案:注意空格
-exec rm -f \
改為
-exec rm -f \
shell指令碼實現刪除指定日期之前的檔案
cat delbak.sh bin sh location root sqlbak find location mtime 30 type f xargs rm fps location 是設定查詢的目錄 mtime 30 是設定時間為30天前 type f 這周查詢的型別為檔案 然後加入cront...
mysql刪除指定日期前資料
由於資料上報產生資料量過大,因此需要定期刪除無用資料。mysql語句如下 1 delete from t iot cb device data changed where event time is null or date event time date date sub now interval...
刪除大於指定日期的檔案
刪除大於30天的檔案 find opt backup type f mtime 30 delete或者 find opt backup type f mtime 30 exec rm rf 刪除大小為0的檔案 find opt backup size 0 exec rm i type f 表示只找出...