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 的命令格式如下:

从上图我们可以看出:

  1. 一条 crontab 命令分成六列,写在一行内;
  2. 前 5 列用于定时,指明什么时候开始执行;
  3. 第 6 列用于指定需要定时执行的命令或脚本;

此外,和 Shell 脚本一样,在 crontab 文件中,我们也可以用 # 来表示注释。

花式定时

在 crontab 命令中用于定时的前 5 列中,支持以下符号,用于「花式定时」:

  1. 星花(*):代表所有可能的值;
  2. 逗号(,):用逗号隔开同一字段的不同范围;
  3. 连字符(-):用连字符连接两个整数,表示整数范围;
  4. 斜线(/):实际上是除法斜线,用来指定时间间隔频率。

一些例子

有了这些知识,我们就可以看一些实例了。

# 每分钟执行一次
* * * * * command
# 每 5 分钟执行一次
*/5 * * * * command
# 每个小时的 15 分和 45 分执行一次
15,45 * * * * command
# 晚上 20:00 -- 20:15 每分钟执行一次
0-15 20 * * * command
# 每周一上午 10 点执行一次
0 10 * * 1 command
find —— 找些乐子

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命令定期清理过期文件的更多相关文章

  1. linux定时执行任务crontab命令用法

    linux系统的定时任务是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的.另外, 由于使用者自己也可以设置计划任务,所 ...

  2. Linux下计划任务:crontab 命令的权限说明

    Linux下的计划任务: 使用crontab命令来执行调度,在 Linux 下可以通过创建文件 /etc/cron.allow 或者 /etc/cron.deny 来控制权限,如果 /etc/cron ...

  3. 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 ...

  4. mac 连接linux服务器,用scp命令实现本地文件与服务器文件之间的互相传输

    mac连接linux服务器 打开终端,切换到root权限下,切换root权限命令:sudo -i 通过ssh命令连接linux服务器:ssh root@ip地址(root是账户名) 然后根据提示输入密 ...

  5. Linux sh、source和.命令执行.sh文件的区别

    sh文件介绍 .sh为Linux的脚本文件,我们可以通过.sh执行一些命令,可以理解为windows的.bat批处理文件. 点命令 .命令和source是同一个命令,可以理解为source的缩写,简称 ...

  6. Linux下nc或scp命令来实现文件传输

    很实用的小技巧, 可以使用nc或者是scp nc命令,转载自:https://www.cnblogs.com/xuybin/archive/2013/09/27/3343098.html 发送端:ca ...

  7. 1)Linux学习笔记:crontab命令

    crond简介 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程 配置文件 ``` SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin: ...

  8. Linux下执行的java命令重定向到文件中的方法

    在Linux下通常会执行如:java -version 的命令, 但是,命令只是打印到了屏幕上不能重定向到文件中或标准输出流中. 此时需要将错误输出流重定向到标准输出流中就可以得到了. 比如:java ...

  9. Linux使用scp远程传输命令进行服务器文件互传(阿里云服务器)

    阿里云同一个区的的两个云服务器,通过内网进行文件传输,速度快不说(正常传输文件的速度能达到35m~50m/s),还不占用公网带宽. 阿里云云服务器有一个安全组策略,可能需要设置下 内网入.出方向的IP ...

随机推荐

  1. C#版ObjectId

    近来在准备弄一个开源的HIS,但一周过去了几乎没有进度.就卡在ID如何生成.HIS的数据库压力大,如何多数据库支持,减轻压力一直想去实现.拿不准纯数字ID段还是GUID一类的文本ID.最终在mongo ...

  2. Chapter14 糖酵解 糖异生 戊糖途径

    糖酵解 一. 1.总览 产生丙酮酸 产生两个ATP 产生两个NADH 丙酮酸的去路: 产生乙醇 产生乳酸 乙酰辅酶A 参与其他合成 2.氧化磷酸化和之后的底物水平磷酸化是一个藕联过程 3.能量存在丙酮 ...

  3. Java数据库技术

    JDBC即Java数据库连接     是接口,用于执行SQL语句,包含Java写的类和界面.几乎可以把SQL传给任何数据库,不用单独编写SQL.     用处,1是与数据库建立连接,2是向数据库发送S ...

  4. (数学)Knight's Trip -- hdu -- 3766

    http://acm.hdu.edu.cn/showproblem.php?pid=3766 Knight's Trip Time Limit: 2000/1000 MS (Java/Others)  ...

  5. android PendingIntent 使用通知传递多个参数,及不覆盖的问题

    Intent updateIntent = new Intent(GetNoticeService.this, DetailGonggaoActivity.class); updateIntent.p ...

  6. marven与Eclipse集成配置

    maven作为一个项目构建工具,在开发的过程中很受欢迎,可以帮助管理项目中的bao依赖问题,另外它的很多功能都极大的减少了开发的难度,下面来介绍maven的安装及与eclipse的集成. maven的 ...

  7. yum-本地源配置(CentOS7)

    服务器版本查看:# cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) 一.挂载ISO文件: 1.ISO镜像下载网站:网易镜像: ...

  8. WinRAR试用过期决绝方法

    一.WinRAR 试用过期决绝方法 直接去WINRAR官方下个版本装上然后这样 复制以下内容(红色)到记事本,保存为rarreg.key文件(即文件名是rarreg,扩展名是key),把这文件拷贝到W ...

  9. Aspose.Words 将word2中的内容插入到word1中的指定位置

    将word2中的内容插入到word1中的指定位置(经测试可用) 在官网找到的例子,记录一下: public static void InsertDocumentAtBookmark(string da ...

  10. WPF MeasureOverride和 ArrangeOverride做个 页面导航

    public class NavigationPanel:Panel { protected override Size MeasureOverride(Size availableSize) { S ...