您好,登錄后才能下訂單哦!
這篇文章主要介紹“怎么使用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)。
免責(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)容。