Linux中定時刪除超過指定大小的文件夾


背景: 開發環境總是動不動就沒有空間了, 大部分都是debug日志。所以有必要在日志很瘋狂的時候,刪除不必要的日志。

思路:一、 書寫刪除日志文件腳本; 定時任務執行。  但是有時候的日志是需要保存用來查詢的。所以不完美。

   二、 刪除腳本保存,定時任務去查詢系統空間是否到達臨界值,到達則刪除,否則不進行任何操作。

 

日志刪除腳本:

#!/bin/sh
date "+%Y-%m-%d %H:%M:%S"
echo ==========before rm==========
df -h
echo
echo current dir size:
du -sh  
echo


find /logs -name "log.out.*" -user $USER -exec rm -f {} \;
find /logs -name "log-201*.out" -user $USER -exec rm -f {} \;
find /logs -name "facade.out.*" -user $USER -exec rm -f {} \;
find /logs -name "monitorlog.out.*" -user $USER -exec rm -f {} \;
find /logs -name "monitordetaillog.out.*" -user $USER -exec rm -f {} \;

find /logs -name "catalina.out.*" -user $USER -exec rm -f {} \;
find /logs -name "catalina.2*" -user $USER -exec rm -f {} \;

if [ ! -f .cleanFile.sh ]; then
echo "cat /dev/null>\$1">.cleanFile.sh
chmod +x .cleanFile.sh
fi

find /logs -name "catalina.out" -user $USER -exec ./.cleanFile.sh {} \;
find /logs -name "log.out" -user $USER -exec ./.cleanFile.sh {} \;

echo ==========after rm===========
df -h
echo 
echo current dir size:
du -sh 
echo

定時刪除任務:

1 4 * * * /logs/rmlog.sh>>/logs/rmlog.sh.log

指定大小刪除的定時任務:

# 查詢使用多少空間
mya="df -h | sed -n '3p;' | awk '{print $2}' | sed 's/G//'"

# 如果空間不夠,則執行日志刪除腳本
awk 'BEGIN{ if($mya>34){cmd="sh /logs/rmlog.sh"; system(cmd);}else{cmd="echo nothing"; system(cmd);}}'

# 定時任務
*/2 * * * * awk 'BEGIN{ if($mya>34){cmd="sh /logs/rmlog.sh"; system(cmd);}else{cmd="echo nothing"; system(cmd);}}'

 

歡迎交流!!! 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM