• 学透shell 带你写常用的100个 shell 脚本(一)定时删除过期文件


    本文已参与「新人创作礼」活动,一起开启掘金创作之路。

    写在前面 本系列文章,记录shell学习及实践中的一些思路,从简到难,从实践中学会shell的应用,结合生产实际环境,给大家一些必备的脚本是实例。 注意⚠️:仅供学习使用,未经授权,不可商用,转载请标明出处,文章前请附本文链接。 如有疑问,请邮件联系我 ituci@icloud.com file

    使用场景

    需要清理服务器中过期的文件、日志、临时压缩未清理的垃圾文件、过久的备份文件,手动删除过于繁琐,可以通过此脚本进行删除,如有不同场景,适量修改即可

    思路

    目标:删除 /home/logs/下超过30天的日志文件,文件名称为xxxx-service-2022-06-18-20.out

    先使用 find 筛选出此类文件

    find /home/logs/ -mtime +30 -type f -name *.out

      参数说明

      --mtime +30 是设置时间为 30天前(+ 超过30天),用于指定文件的最后修改,即n*24小时前,+7表示超过7天。 -type f 此次查找的类型为 文件

      • -mtime 0 表示文件修改时间距离当前为0天的文件,即距离当前时间不到1天(24小时)以内的文件。
      • -mtime 1 表示文件修改时间距离当前为1天的文件,即距离当前时间1天(24小时-48小时)的文件。
      • -mtime+1 表示文件修改时间为大于1天的文件,即距离当前时间2天(48小时)之外的文件 。
      • -mtime -1 表示文件修改时间为小于1天的文件,即距离当前时间1天(24小时)之内的文件。

      如果只需单次清理,只需要执行删除命令即可

      # 方法一: -exec选项用于在find中执行命令,这里执行的命令是rm -f,{} \;意味着循环遍历项目列表
      find /home/logs/ -mtime +30 -type f -name *.out -exec rm -f {} \;
      方法二:
      find /home/logs/ -mtime +30 -type f -name *.out |xargs rm -f
      方式三
      find /home/logs/ -mtime +30 -type f -name *.out -delete;
      • 1
      • 2
      • 3
      • 4
      • 5

      如果多次需要,那我们需要写在脚本中,并添加定时任务

      #!/bin/bash
      location="/home/logs/"
      find $location -mtime +30 -type f -name *.out|xargs rm -f
      • 1
      • 2

      添加定时任务,设置每个月1号晚上4点10分执行脚本.当然你也可以根据你自己的需求去整

      crontab -l
      10 4 1 * * /bin/bash /home/soft_shell/rmlog.sh
      • 1

      OK ,此次结束 🔚。

      如有疑问,请邮件联系我 ituci@icloud.com

      欢迎关注我,点个赞和收藏吧,再找不迷路!❤️

      本文由博客一文多发平台 OpenWrite 发布!

    • 相关阅读:
      【Docker Compose】Docker Compose 的安装,使用以及实现微服务集群的部署
      《opencv学习笔记》-- Harris角点检测
      ios 对话框UIAlertController放 tableview
      【matplotlib基础】--文本标注
      UE5 运行时生成距离场数据
      固态硬盘SSD格式化后,数据恢复的可能性有多大?
      Linux快速入门之文件和目录
      【操作系统】虚拟内存浅析
      二叉树、二叉搜索树,平衡二叉树(旋转)红黑树(红黑规则)
      梳理promise功能逻辑,手写promise及相关方法
    • 原文地址:https://blog.csdn.net/weixin_38432056/article/details/125352296