shell脚本实现定时删除文件或文件夹

2022-09-03 18:00:12 61 0
魁首哥

一、删除XX天(默认10天)之前某个目录下面带.log的日志文件,并且输出文件显示删除的文件

#!/bin/sh

#如果没有输入变量值,默认天数为10
start=$(date +%y-%m-%d-%H%M%m)
File=/temp/http://www.cppcns.comdelete_$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天)之前的文件夹

shell脚本实现定时删除文件或文件夹

#!/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 php"find $FilePah -type d -ctime +$day > $File"
find $FilePath -type d -ctimepython +$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

三、清空文件内容(产生日志文件过大,占用磁盘空间),可以与定时任务结合使用

每天早上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 $lipythonne"
      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个*的含义是,第一个*是分,第二个*是小时,第三个*是日,第4个*是月,第5个*是周,第6列是命令

2.-exec command {} \; —–将查到的文件执行command操作,{} 和 \;之间有空格

3.find 命令三个选项用于按照时www.cppcns.com间查找,单位都是小时:

mtime — 文件内容上次修改时间
atime — 文件被读取或访问的时间
ctime — 文件状态变化时间

情况一:正常情况(系统有service命令)

重启服务命令:[root@Centos6 /]# service crond restart

启动服务命令:[root@centos6 /]# service crond start

停止服务命令:[root@centos6 /]# service crond stop

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

到此这篇关于shell脚本实现定时删除文件或文件夹的文章就介绍到这了,更多相关shell 定时删除内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

收藏
分享
海报
0 条评论
61
上一篇:shell脚本批量将文件复制到指定的文件夹下 下一篇:linux下shell脚本备份文件的方法实现

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码