目 录CONTENT

文章目录

解放双手,shell定时清理过期文件

ZOUNAN
2022-06-22 / 0 评论 / 1 点赞 / 446 阅读 / 932 字
温馨提示:
本文最后更新于 2022-06-22,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

工作中我们经常会有一个需求,需要定时清理不具有时效性的文件,比如已经超过30天的数据库备份文件,两周前的日志文件等等,以避免占用更多的磁盘空间,因此我们希望有一个脚本能定时自动帮我们去清理。

利用shell脚本就可以帮我们实现这个功能,请往下看:

1.删除文件命令:

find 对应目录 -mtime +天数 -name “文件名” -exec rm -rf {} ;

实例命令:

find /home/weblogic/rc-server-tomcat-8081/logs -mtime +30 -name "*.txt" -exec rm -rf {} \;

说明:

将/home/weblogic/rc-server-tomcat-8081/logs目录下所有30天前带".txt"的文件删除。具体参数说明如下:

  • find:linux的查找命令,用户查找指定条件的文件;

  • /home/weblogic/rc-server-tomcat-8081/logs:想要进行清理的任意目录;

  • -mtime:标准语句写法;

  • +30:查找30天前的文件,这里用数字代表天数;

  • .log":希望查找的数据类型,".jpg"表示查找扩展名为jpg的所有文件,”*"表示查找所有文件,这个可以灵活运用,举一反三;

(签购单接口性能测试时会产生大量签购单图片,并保持在对应的目录下,导致磁盘经常被占满,自动清除前一天签购单图片,脚本中,清除的格式改为.jpg就行)

  • -exec:固定写法;

  • rm -rf:强制删除文件,包括目录;

  • {} ; :固定写法,一对大括号 + 空格 + \ + ;

2.计划任务:

若嫌每次手动执行语句太麻烦,可以将这小语句写到一个可执行shell脚本文件中,再设置cron调度执行,那就可以让系统自动去清理相关文件。

2.1创建shell:

touch /home/weblogic/luojie/script/auto-del-30-days-txt.sh
chmod  777 auto-del-30-days-txt.sh

新建一个可执行文件auto-del-30-days-txt.sh,并分配可运行权限。

2.2编辑shell脚本:

vi auto-del-30-days-txt.sh

编辑auto-del-30-days-txt.sh文件如下:

#!/bin/sh
find /home/weblogic/rc-server-tomcat-8081/logs -mtime +30 -name "*.txt" -exec rm -rf {} \;

ok,保存退出(:wq!)。

2.3计划任务:

crontab -e

将auto-del-30-days-txt.sh执行脚本加入到系统计划任务,到点自动执行
输入:

10 0 * * * /home/weblogic/luojie/script/auto-del-30-days-txt.sh >/dev/null 2>&1

这里的设置是每天凌晨0点10分执行auto-del-30-days-txt.sh文件进行数据清理任务了。

补充

crontab定时说明:

cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。

*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 星期中星期几 (0 - 6) (星期天 为0)
|    |    |    +---------- 月份 (1 - 12) 
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)

常用命令:

cron服务操作命令
service crond start    #启动服务
service crond stop     #关闭服务
service crond restart  #重启服务
service crond reload   #重新载入配置
service crond status   #查看服务状态

crontab -l   #查看crontab
crontab -e   #编辑crontab
crontab -r   #删除crontab

crontab命令实例:

0 0 L * *        #每月的最后1天执行
* * * * *        #每1分钟执行一次
*/10 * * * *     #每隔10分钟执行一次
0 */1 * * *      #每隔1小时执行一次
30 21 * * *      #每晚的21:30执行
3,15 * * * *     #每小时的第3和第15分钟执行
3,15 8-11 * * *  #在上午8点到11点的第3和第15分钟执行
1

评论区