Linuxタイミングでファイルまたはフォルダを削除するshellスクリプト


一、XX日(デフォルト10日)前のあるディレクトリの下にあるテープを削除する.logのログファイル、出力ファイルは削除したファイルを表示します
#!/bin/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  0 , 1 (24 ) 
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日(デフォルト10日)前のフォルダを削除する
#!/bin/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

echo " :"
echo "find $FilePath -type d -ctime +$day | xargs rm -rf"
find $FilePath  -type d -ctime +$day | xargs rm -rf

 
三、ファイルの内容を空にする(ログファイルが大きすぎて、ディスクのスペースを占有する)ことで、タイミングタスクと組み合わせて使用することができる
毎朝6時に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 " 500M"  
        filesize=500M
    else
        filesize=$1
fi 


echo " :$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
	# 0
    echo "$line" | grep -q "$path"
    #$?  , 0 
    if [  $? -eq 0 ]
    then
        # 
        filetype=${line#*.}
        if [ $filetype == "zip"  ];then
            echo "rm -rf $line"
            rm -rf $line
        else
            echo "  cat /dev/null > $line"
            cat /dev/null  >  $line
        fi
    fi
done

shellタイミングタスクの作成
コマンドの実行:
[root@localhost ~]# crontab -e
10 0 * * */data/auto-del.sh >/dev/null 2>&1
スケジュールタスクを表示するには、次の手順に従います.
[root@localhost ~]# crontab -l 10 0 * * */data/auto-del.sh >/dev/null 2>&1
コメント:
30分おきにroot実行:*/30***/data/auto-del.sh >/dev/null 2>&1
毎晩1時に実行:0 1**/data/auto-del.sh >/dev/null 2>&1
1.crontab–eで独自のタイミングタスクを作成します.5つの*は、1番目の*が分、2番目の*が時間、3番目の*が日、4番目の*が月、5番目の*が週、6番目の列がコマンドです.
2.-exec   command   {}\; -検出されたファイルをcommand操作、{}および;間にスペースがある
3.findコマンドの3つのオプションは、時間単位で検索するために使用されます.単位は時間です.mtime-ファイルの内容が最後に変更された時間atime-ファイルが読み込まれた時間、またはアクセスされた時間ctime-ファイルの状態が変化した時間です.
4.環境変数を使用する必要がある場合は、必要なスクリプトに環境変数を追加します.
たとえば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