溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么使用shell腳本實(shí)現(xiàn)定時(shí)刪除文件或文件夾

發(fā)布時(shí)間:2022-08-23 11:32:37 來(lái)源:億速云 閱讀:213 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹“怎么使用shell腳本實(shí)現(xiàn)定時(shí)刪除文件或文件夾”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“怎么使用shell腳本實(shí)現(xiàn)定時(shí)刪除文件或文件夾”文章能幫助大家解決問(wèn)題。

一、刪除XX天(默認(rèn)10天)之前某個(gè)目錄下面帶.log的日志文件,并且輸出文件顯示刪除的文件

#!/bin/sh

#如果沒(méi)有輸入變量值,默認(rèn)天數(shù)為10
start=$(date +%y-%m-%d-%H%M%m)
File=/temp/delete_$start.txt
FilePath=/data

echo $File

if [ ! -n "$1" ];
then
    day=10
else
     day=$1
fi

#-mtime 10 表示文件修改時(shí)間距離當(dāng)前為0天的文件,即距離當(dāng)前時(shí)間不到1天(24小時(shí))以?xún)?nèi)的文件
echo "輸出日志文件:"
echo "find $FilePath -mtime +$day -name "*.log*" > $File"
find $FilePath -mtime +$day -name *.log* > $File

echo "刪除日志文件:"
echo "find $FilePath -mtime +$day -name "*.log*"  -exec rm -rf {} \;"
find $FilePath -mtime +$day -name *.log*  -exec rm -rf {} \;

二、刪除XX天(默認(rèn)10天)之前的文件夾

#!/bin/sh

#如果沒(méi)有輸入變更值,默認(rèn)天數(shù)為10
start=$(date +%y-%m-%d-%H%M%m)
File=/temp/delete_backup_$start.txt
FilePath=/data/backup

echo $File

if [ ! -n "$1" ];
then
    day=10
else
     day=$1
fi

#刪除10天之前的文件夾
echo "輸出日志文件:"
echo "find $FilePah -type d -ctime +$day > $File"
find $FilePath -type d -ctime +$day > $File

#壓縮10天之前的文件夾
echo "find $FilePath -type d -ctime +$day | xargs gzip -r"
find $FilePath  -type d -ctime +$day | xargs gzip -r

echo "刪除日志文件:"
echo "find $FilePath -type d -ctime +$day | xargs rm -rf"
find $FilePath  -type d -ctime +$day | xargs rm -rf

三、清空文件內(nèi)容(產(chǎn)生日志文件過(guò)大,占用磁盤(pán)空間),可以與定時(shí)任務(wù)結(jié)合使用

每天早上6點(diǎn)執(zhí)行    0  6 * * *  sh /log/CleanLogFile.sh

#!/bin/bash
path=/log
filename=$path/BigLog.txt

#搜索大于10KB的文件
#-size +10k
#搜索小于10KB的文件
#-size -10k
#搜索等于10KB的文件
#-size 10k

if [ $# -ne 1 ]  
then  
        #echo "默認(rèn)設(shè)置文件大小為500M"  
        filesize=500M
    else
        filesize=$1
fi 


echo "設(shè)置清除文件大?。?filesize"


if [  -f "$filename" ]; then    
    rm -rf $filename
    echo  "原始文件已刪除"
else
    echo "$filename不存在"
fi 

find $path -name "*.*"  -size +$filesize -exec ls -lh {} \; | awk '{ print $5,$9}' > $filename

for line in `cat $filename`
do
    #如果有匹配的內(nèi)容則立即返回狀態(tài)值0
    echo "$line" | grep -q "$path"
    #$? 是指上一條命令的執(zhí)行狀態(tài), 0就是正常
    if [  $? -eq 0 ]
    then
        #獲取文件類(lèi)型
        filetype=${line#*.}
        if [ $filetype == "zip"  ];then
            echo "rm -rf $line"
            rm -rf $line
        else
            echo "執(zhí)行清空命令 cat /dev/null > $line"
            cat /dev/null  >  $line
        fi
    fi
done

編寫(xiě)shell定時(shí)任務(wù)

執(zhí)行命令:

[root@localhost ~]# crontab -e

10 0 * * * /data/auto-del.sh >/dev/null 2>&1

查看定時(shí)任務(wù):

[root@localhost ~]# crontab -l
10 0 * * * /data/auto-del.sh >/dev/null 2>&1

備注:

每隔30分鐘root執(zhí)行一次:*/30 * * * *  /data/auto-del.sh >/dev/null 2>&1

每天晚上1點(diǎn)執(zhí)行:0 1 * * *  /data/auto-del.sh >/dev/null 2>&1

1.通過(guò)crontab –e來(lái)創(chuàng)建自己的定時(shí)任務(wù),5個(gè)*的含義是,第一個(gè)*是分,第二個(gè)*是小時(shí),第三個(gè)*是日,第4個(gè)*是月,第5個(gè)*是周,第6列是命令

2.-exec   command   {} \;      —–將查到的文件執(zhí)行command操作,{} 和 \;之間有空格

3.find 命令三個(gè)選項(xiàng)用于按照時(shí)間查找,單位都是小時(shí):

mtime — 文件內(nèi)容上次修改時(shí)間
atime — 文件被讀取或訪問(wèn)的時(shí)間
ctime — 文件狀態(tài)變化時(shí)間

情況一:正常情況(系統(tǒng)有service命令)

重啟服務(wù)命令:[root@centos6 /]# service crond restart

啟動(dòng)服務(wù)命令:[root@centos6 /]# service crond start

停止服務(wù)命令:[root@centos6 /]# service crond stop

4.如果需要用到環(huán)境變量,必須的腳本中添加環(huán)境變量

例如,加載java變量

export JAVA_HOME="/opt/jdk1.8.0_91"
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$LAMPP_HOME/bin:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:${ANT_HOME}/bin

關(guān)于“怎么使用shell腳本實(shí)現(xiàn)定時(shí)刪除文件或文件夾”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI