广告位联系
返回顶部
分享到

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

linux shell 来源:互联网 作者:佚名 发布时间:2022-08-22 22:07:02 人浏览
摘要

一、删除XX天(默认10天)之前某个目录下面带.log的日志文件,并且输出文件显示删除的文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #!/bin/sh #如果没有输入变量值,默认天数为10

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

#!/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天)之前的文件夹

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

#!/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

 

#压缩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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

#!/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定时任务

执行命令:

1

2

3

[root@localhost ~]# crontab -e

 

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

查看定时任务:

1

2

[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 命令三个选项用于按照时间查找,单位都是小时:

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

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

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

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

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

4.如果需要用到环境变量,必须的脚本中添加环境变量

例如,加载java变量

1

2

3

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


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://blog.csdn.net/luozhuwang/article/details/52525335
相关文章
  • shell循环命令的介绍
    1. for 命令 1.1 for 命令的使用 bash shell 提供了for命令,可以创建一个遍历一系列值的循环。每次一轮循环都使用其中一个值来执行已定义好的
  • shell脚本设置日志格式的方法
    shell脚本设置日志格式 1.封装函数 #!/bin/bash function log() { echo $@ } //测试: log this is a test... log today is `date +%Y-%m-%d` 2.设置时间日志 #!/bin/bash
  • linux下shell脚本备份文件的方法实现
    1、shell自动备份 主要功能: 1)将pathSrc目录中的文件拷贝到pathDst目录中去。 具体步骤:先查询源目录和目标目录中的文件,分别存在file
  • shell脚本实现定时删除文件或文件夹
    一、删除XX天(默认10天)之前某个目录下面带.log的日志文件,并且输出文件显示删除的文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
  • shell脚本批量将文件复制到指定的文件夹下

    shell脚本批量将文件复制到指定的文件夹下
    由于线上文件比较多,选择特定的文件拿下线下进行语料标注,如果指定的文件数量太多,一个个复制就很麻烦。所以写一个shell脚本进行批
  • 在shell脚本中激活conda虚拟环境的几种方法

    在shell脚本中激活conda虚拟环境的几种方法
    在shell脚本中激活conda虚拟环境 常用命令行激活conda的env的命令有2种: 1 2 conda activate ENV_NAME source /home/zhaohuiyao/minconda3/bin/activate ENV_NAME 但是
  • Shell内置命令之exit的语法与实例
    介绍: exit 用于退出当前shell环境进程结束运行,并且可以返回一个状态码.一般使用$?可以获取状态码. 语法: 正确退出语法 exit #默认返回状态
  • shell中的curl网络请求的实现介绍
    shell中的curl网络请求的实现 curl 是利用URL语法在命令行下工作的文件传输工具,1997年首次发行,支持文件上传和下载,结合shell脚本体验更
  • 使用shell脚本循环处理文本的问题

    使用shell脚本循环处理文本的问题
    公司是使用puppet来进行配置管理, 某天修改完puppet后领导回复: 我们有一个文档cabinet.txt记录了物理机器所在的机柜, 除了文档里的其他机器都
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计