linux使用find和crontab命令定期清理过期文件
crontab 命令
crontab 命令是 Linux 中用来设定重复执行命令或脚本的工具。它能够在指定的时间段内,按照需求以某一时间间隔执行命令或脚本。
crontab 的基本用法
crontab [-u <user>] [-e|-l|-r]
crontab <filename>
crontab <filename> 可以读入一个以 crontab 语法书写的文件,并依照文件内的指示执行定时任务。与此同时,crontab -l 能够在标准输出上列出当前用户所有的定时任务情况。因此,我们可以用 crontab -l > <filename> 来保存当前 crontab 的状况,在有需要的时候(比如误删除)用 crontab <filename> 读入恢复。crontab -e 则会启动系统默认的编辑器。这个编辑器由系统环境变量 EDITOR 指定;例如 export EDITOR=vi,则 crontab -e 会启动 vi 来编辑当前用户的 crontab 定时任务文件。crontab -r 则会删除用户的所有 crontab 定时任务。
用来指定用户的 -u <user> 选项则会改变 -e/-l/-r 等选项的行为。如果不通过 -u 指定用户,则默认的操作都是针对当前用户的;反之,则针对指定的用户。例如 crontab -u Liam -r 则会删除用户 Liam 的 crontab 定时任务——当然,你需要有足够的权限这么做。
crontab 文件的格式
不管是用 crontab <filename> 从文件读入定时任务,还是用 crontab -e 编辑定时任务,我们都会接触到 crontab 格式的命令。
crontab 的命令格式如下:

从上图我们可以看出:
- 一条 crontab 命令分成六列,写在一行内;
- 前 5 列用于定时,指明什么时候开始执行;
- 第 6 列用于指定需要定时执行的命令或脚本;
此外,和 Shell 脚本一样,在 crontab 文件中,我们也可以用 # 来表示注释。
花式定时
在 crontab 命令中用于定时的前 5 列中,支持以下符号,用于「花式定时」:
- 星花(*):代表所有可能的值;
- 逗号(,):用逗号隔开同一字段的不同范围;
- 连字符(-):用连字符连接两个整数,表示整数范围;
- 斜线(/):实际上是除法斜线,用来指定时间间隔频率。
一些例子
有了这些知识,我们就可以看一些实例了。
# 每分钟执行一次
* * * * * command
# 每 5 分钟执行一次
*/5 * * * * command
# 每个小时的 15 分和 45 分执行一次
15,45 * * * * command
# 晚上 20:00 -- 20:15 每分钟执行一次
0-15 20 * * * command
# 每周一上午 10 点执行一次
0 10 * * 1 command
man find 给出的 find 命令的一般形式是:
find [-H] [-L] [-P] [-D debugopts] [-Olevel] path ... [expression]
其中 [-H] [-L] [-P] [-D debugopts] [-Olevel] 很少会用到。因此,find 命令的一般形式可以简化为 find path ... [expression];亦即,在一些路径(默认递归地包含子路径)中找到合适的文件,然后根据 expression 执行相应动作。
path ...: find 命令查找的路径
expression: 具体形式是 -parameters [-exec -ok]
-parameters 有很多,待下一节具体介绍常用的参数
-exec command {} \; 执行一条 Shell 命令
-ok command {} \; 同 -exec 的作用,不过在执行每条命令前,都会提示用户确认
常用的参数
-name : 按照文件名查找文件,接受通配符
find . -name "*.cpp": 在当前目录 (.) 及子目录下递归地查找所有后缀为 .cpp 的文件,并打印在标准输出中
-perm : 按照文件权限查找文件
find . -perm 755: 在当前目录 (.) 及子目录下递归地查找所有权限为 755 的文件(目录),并打印在标准输出中
find . -perm 644 -name "*.cpp": 在当前目录及子目录下 (.) 递归地查找所有权限为 644 的 .cpp 文件,并打印在标准输出中
-group : 按照文件的所属组查找
-user : 按照文件的所有者查找
find . -user search: 在当前目录 (.) 及子目录下递归地查找所有 search 账号所属的文件,并打印在标准输出中
-atime, -mtime, -amin, -mmin : a 开头的表示「按照上次访问时间查找」,m 开头的表示「按照上次修改时间查找」;-n 表示 n 时间内,+n 表示 n 时间以前
find . -atime +7: 在当前目录 (.) 及子目录下递归地查找所有上次访问在 7 天以前的文件,并打印在标准输出中
find . -mmin -10: 在当前目录 (.) 及子目录下递归地查找所有上次修改在 10 分钟以内的文件,并打印在标准输出中
-newer file1 ! file2 : 查找比 file1 新但是比 file2 旧的文件
-type [b|d|c|p|l|f] : 按照文件类型查找
b: 块设备文件
d: 目录
c: 字符设备文件
p: 管道文件
l: 符号链接文件
f: 普通文件
-follow : 如果 find 命令遇到符号链接文件,就跟踪至链接所指向的文件
-delete : 删除查找到的文件或目录
定期清理
至此,定期清理无用的文件就变得很简单了。我们只需要在 crontab 里结合 find 命令的 -delete 选项即可。
0 8 * * * find /home/s/coredump -user search -type f -mtime +7 -delete
这里,我们在每天早上 8 点整执行 find 命令;该命令会在 /home/s/coredump 目录下寻找 search 用户创建的普通 7 天前的文件,然后删除掉。
-END-

linux使用find和crontab命令定期清理过期文件的更多相关文章
- linux定时执行任务crontab命令用法
linux系统的定时任务是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的.另外, 由于使用者自己也可以设置计划任务,所 ...
- Linux下计划任务:crontab 命令的权限说明
Linux下的计划任务: 使用crontab命令来执行调度,在 Linux 下可以通过创建文件 /etc/cron.allow 或者 /etc/cron.deny 来控制权限,如果 /etc/cron ...
- linux crontab命令 自动下载文件
#crontab -e#download stock data, Mon-Fri, 9:15 - 11:30, 13:00 - 15:0015,30,40,50 9 * * 1-5 (cd /home ...
- mac 连接linux服务器,用scp命令实现本地文件与服务器文件之间的互相传输
mac连接linux服务器 打开终端,切换到root权限下,切换root权限命令:sudo -i 通过ssh命令连接linux服务器:ssh root@ip地址(root是账户名) 然后根据提示输入密 ...
- Linux sh、source和.命令执行.sh文件的区别
sh文件介绍 .sh为Linux的脚本文件,我们可以通过.sh执行一些命令,可以理解为windows的.bat批处理文件. 点命令 .命令和source是同一个命令,可以理解为source的缩写,简称 ...
- Linux下nc或scp命令来实现文件传输
很实用的小技巧, 可以使用nc或者是scp nc命令,转载自:https://www.cnblogs.com/xuybin/archive/2013/09/27/3343098.html 发送端:ca ...
- 1)Linux学习笔记:crontab命令
crond简介 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程 配置文件 ``` SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin: ...
- Linux下执行的java命令重定向到文件中的方法
在Linux下通常会执行如:java -version 的命令, 但是,命令只是打印到了屏幕上不能重定向到文件中或标准输出流中. 此时需要将错误输出流重定向到标准输出流中就可以得到了. 比如:java ...
- Linux使用scp远程传输命令进行服务器文件互传(阿里云服务器)
阿里云同一个区的的两个云服务器,通过内网进行文件传输,速度快不说(正常传输文件的速度能达到35m~50m/s),还不占用公网带宽. 阿里云云服务器有一个安全组策略,可能需要设置下 内网入.出方向的IP ...
随机推荐
- 手机布局rem的使用(rem)
最后一堆代码是举例的全码. 一 直接<head>标签里套用以下,其他都不用 <script> document.documentElement.style.fontSize = ...
- C#读取配置文件app.config
应用程序配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的.它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序.配置文件的根节点是configuration. ...
- How to transfer developer profile to one mac to another mac
Export developer profile from old mac. In the Xcode Organizer, select your team in the Teams section ...
- 【repost】 原生JS执行环境与作用域深入理解
首先,我们要知道执行环境和作用域是两个完全不同的概念. 函数的每次调用都有与之紧密相关的作用域和执行环境.从根本上来说,作用域是基于函数的,而执行环境是基于对象的(例如:全局执行环境即window对象 ...
- python之函数2
Python 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也 ...
- UITabBarItem title 和self.title设置不同的标题
self.navigationItem.title = @"my title"; //sets navigation bar title. self.tabBarItem.titl ...
- 关于tableview下拉刷新崩溃的问题
逻辑应该是这样的:1. 下拉2. 达到下拉临界值以后再请求网络数据3. 待数据加载到本地以后才更新 data source4. reload tableview 如果先清空再下拉,后果就是往下拉的距离 ...
- CocoaPods的使用(一) 安装
一.什么是CocoaPods? 前言: 思考如何引入一个第三方框架. 例如: 百度地图SDK.友盟.ShareSDK. 信鸽推送等. 从github或某处下载第三方SDK 工程中导入所需要的SDK的文 ...
- selenium在操作隐藏元素时会报错,怎么判断元素是隐藏的?
首先页面元素隐藏有五种方法: 1. opacity: 0; opacity 属性的意思是设置一个元素的透明度.它不是为改变元素的边界框(bounding box)而设计的.这意味着将 opacity ...
- [机翻] WIRER ON THE WIRE - SIGNALR协议的非正式描述
原文 原文很简单,以下为机翻 WIRER ON THE WIRE - SIGNALR协议的非正式描述 我已经看到询问有关SignalR协议的描述的问题出现了很多.哎呀,当我开始关注SignalR时,我 ...