脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - shell - shell脚本实现定时删除文件或文件夹

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

2023-03-01 14:15小李广 shell

本文主要介绍了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
#!/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

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

原文链接:https://blog.csdn.net/luozhuwang/article/details/52525335

延伸 · 阅读

精彩推荐
  • shellShell处理带空格的文件名的方法

    Shell处理带空格的文件名的方法

    这篇文章主要介绍了Shell处理带空格的文件名的方法,文中总结了若干处理带空格的文件名的技巧,需要的朋友可以参考下...

    shell教程网11152023-02-10
  • shell使用shell脚本采集系统cpu、内存、磁盘、网络等信息

    使用shell脚本采集系统cpu、内存、磁盘、网络等信息

    这篇文章主要介绍了使用shell脚本采集系统cpu、内存、磁盘、网络等信息,需要的朋友可以参考下...

    shell教程网10432023-02-09
  • shellshell自定义函数及参数调用解析

    shell自定义函数及参数调用解析

    与其它的脚本语言一样,bash同样支持函数。本文为大家介绍在bash中定义与使用函数的方法,有需要的朋友可以参考下...

    shell教程网4542022-12-12
  • shellLinux进程通信(IPC)方式简介

    Linux进程通信(IPC)方式简介

    linux下进程间通信的几种主要方式:管道(pipe)和有名管道(FIFO)、信号(signal)、消息队列、共享内存(shared memory)、信号量(semaphore)、套接字(s...

    脚本之家11892022-12-25
  • shellShell之免交互的实现

    Shell之免交互的实现

    本文主要介绍了Shell之免交互的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来...

    白雪滑落树梢10002023-02-28
  • shellLinux下统计当前文件夹下的文件个数、目录个数

    Linux下统计当前文件夹下的文件个数、目录个数

    这篇文章主要介绍了Linux下统计当前文件夹下的文件个数、目录个数,本文使用ls命令配合管理、grep命令实现统计需求,需要的朋友可以参考下...

    脚本之家9892023-02-21
  • shell通过实例深入理解linux shell数组

    通过实例深入理解linux shell数组

    本文为大家介绍linxu shell中数组的相关知识,并举了很多例子供参考,包括数组的复制,计算,删除,替换等,是学习shell 数组的不可多得的好文章...

    shell教程网7352022-12-16
  • shell把mysql查询结果保存到文件的shell脚本

    把mysql查询结果保存到文件的shell脚本

    这篇文章主要介绍了把mysql查询结果保存到文件的shell脚本,使用mysql的SELECT INTO OUTFILE备份语句,需要的朋友可以参考下...

    shell教程网11762023-01-28