Linux创建一个周期任务来定期删除过期的文件
一:需求
在开发中存在这样的情况,为了防止文件的误删,不允许开发人员直接删除项目中要用到的文件,而是将它们移动到某个目录,然后由一个周期任务去检测并删除内部过期的文件;
二:检测文件是否是过期文件
有两种方式:
1.find中的ctime选项,这个ctime即是change time,即对文件的元数据修改都会更新此值,包括mv/chmod/chown等等;(mv命令会修改文件的user和group)
2.stat中的-Z选项,也是用来显示change time的,这种方式需要将文件的ctime赋值到变量,然后通过date获取当前时间,最终比较后来判断是否要删除;
三:detectDir目录中过期文件的删除实现
由于2中stat的方式最终还是要依赖find命令先找出文件,而find命令里已经提供好了对应的选项,因此直接用find即可:find detectDir -type f -ctime +14 -exec rm {} \;(这里rm {}可以理解为循环执行rm 后面的参数是find找到的所有文件逐个遍历的结果)
可以将detectDir目录的user/group均设置为root,然后设置其权限为755,之后其它人要通过sudu才能将文件放入回收文件夹或取消回收;
或者是将目录权限设置为777或733,然后通过chattr附加+a命令使得不能将目录里的文件删除或mv;然后脚本由root运行,先执行chattr -a,对目录中过期文件清理后执行chattr +a;
三:创建周期任务定期执行脚本
1.通过root用户执行contab -e(表示root用户编辑自己的定期任务“表”,这个任务“表”里是可以有多个定期任务的)
接着弹出编辑页面,将页面里的内容修改为如下并保存就能每天的凌晨30分删除/usr/var目录下的change time超过14天的文件:
# 分 时 日 月 星期,其中日和星期不能同时使用(其中一个要为*)
# cron中所有的命令都要是绝对路径,即rm xx不可,要/usr/bin/rm xx
# 分不能为*或空,其它时间可以用,或-进行多项匹配,如星期的1,,
# 表示星期1//3均启用,而1-5表示星期1到5都启用;
# 星期的0和7都代表星期天,每行只写一条命令;(有多个命令的最好写个shell,记得赋予x权限,shell内部的命令不需要绝对路径)
* * - /usr/bin/find /usr/var -type f -ctime + -exec /usr/bin/rm{} \;
Linux创建一个周期任务来定期删除过期的文件的更多相关文章
- [转帖] Linux 创建一个简单的私有CA、发证、吊销证书
原创帖子地址: https://blog.csdn.net/mr_rsq/article/details/71001810 Linux 创建一个简单的私有CA.发证.吊销证书 2017年04月30 ...
- linux的一个find命令配合rm删除某天前的文件
语句写法: find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \; 例1: 将/usr/local/backups目录下所有10天前 ...
- (转)linux的一个find命令配合rm删除某天前的文件
转自:http://www.cnblogs.com/mingforyou/p/3930624.html 语句写法:find 对应目录 -mtime +天数 -name "文件名" ...
- 定期删除IIS日志文件
服务器中由于监控的需要会经常生成很多日志文件,比如IIS日志文件(C:\inetpub\logs\LogFiles),一个稍微有流量的网站,其日志每天可以达到上百兆,这些文件日积月累会严重的占用服务器 ...
- centos中创建自动备份Mysql脚本任务并定期删除过期备份
背景: OA系统数据库是mysql,引擎为myisam,可以直接通过拷贝数据库文件的方式进行备份 创建只备份数据库的任务: 创建保存mysql数据库备份文件的目录mysqlbak mkdir /hom ...
- Java Scheduler ScheduledExecutorService ScheduledThreadPoolExecutor Example(ScheduledThreadPoolExecutor例子——了解如何创建一个周期任务)
Welcome to the Java Scheduler Example. Today we will look into ScheduledExecutorService and it's imp ...
- 【github课程】创建github仓库和库创建一个版本号,并添加到存储库文件的版本号
首先,需要登录github注册一个帐号:https://github.com/ 注册帐号登录后,.在右上角,"新仓库": 然后会出现例如以下的界面: 仅仅须要输入仓库的名称,描写叙 ...
- 使用node创建一个服务器,运行vue打包以后的文件
原理就是使用node里的express框架,搭建一个服务器,然后访问dist文件夹里的文件 prod.server.js var express = require('express') var co ...
- shell定期转移日志文件到云盘并定期删除云盘文件
shell 脚本定期处理如下: cat /home/backup/logs_delete.sh #!/bin/bash /bin/find /data/logs/nginx/ -name " ...
随机推荐
- SQL Server2005/2008 作业执行失败的解决办法
数据库:SQL Server 2005/2008,运行环境:Windows Server 2008 在数据库里的所有作业都执行失败,包括自动执行和手动执行.在事件查看器里看到的错误报告如下: 该 作 ...
- C盘文件过大,C盘空间莫名丢失,pagefile.sys文件
设置显示隐藏文件和受保护的系统文件后此文件会显示pagefile.sys这个是window的页面文件,作为系统的虚拟内存使用,和你的物理内存一样大,你内存已经很大了,不用开虚拟内存了.在系统高级属性下 ...
- Bundle Adjustment---即最小化重投影误差(高翔slam---第七讲)
一.历史由来 Adjustment computation最早是由geodesy的人搞出来的.19世纪中期的时候,geodetics的学者就开始研究large scale triangulations ...
- mysql导入慢解决方法
[mysqldump]max_allowed_packet = 512M [mysqld] interactive_timeout = 120 innodb_change_buffering=alli ...
- mysql-mysqldump命令导出多个数据库结构(实战)
环境:windows server 2012 打开CMD命令行模式, >cd c:\Program Files\Mysql\Mysql 5.7.1\bin c:\Program Files\My ...
- python 面向对象编程 之 元类
元类是类的类,使我们自定义的类,即我们用class定义类本质就是元类,是类的模板 四步走: 一:控制class定义类的过程 1.先拿到类名 2.在拿到基类 3.执行类体代码,得到名称空间的dict 4 ...
- phpstorm+xdebug调试代码
1工具 #phpstorm 前面有文章介绍如何安装 #phpStudy 官网下的2018最新的安装包,php环境使用的也是最新的php7.0nts 2开启php Xdebug拓展 开启拓展,phpSt ...
- 如何为linux系统设置全局的默认网络代理
方法1:更改全局配置文件/etc/profile all_proxy="all_proxy=socks://proxy.xxx.com.cn:80/" ftp_proxy=&quo ...
- php中static静态关键字的使用方法和应用场景
php中除了常规类和方法的使用,访问控制之外,还有静态关键字static,静态变量可以是局部变量也可以是全局变量,当一个程序段执行完毕时,静态变量并没有消失,它依然存在于内存中,下次在定义时还是以前的 ...
- 在linux虚拟机上安装Docker
1.简介Docker是一个开源的应用容器引擎:是一个轻量级容器技术: Docker支持将软件编译成一个镜像:然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像: 运行中的这个 ...