Linuxタイミングでファイルまたはフォルダを削除するshellスクリプト
3097 ワード
一、XX日(デフォルト10日)前のあるディレクトリの下にあるテープを削除する.logのログファイル、出力ファイルは削除したファイルを表示します
二、XX日(デフォルト10日)前のフォルダを削除する
三、ファイルの内容を空にする(ログファイルが大きすぎて、ディスクのスペースを占有する)ことで、タイミングタスクと組み合わせて使用することができる
毎朝6時に0 6**sh/log/cleanLogFileを実行します.sh
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
#!/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