美文网首页LinuxLinux学习之路我用 Linux
Linux 使用 crontab 创建定时任务

Linux 使用 crontab 创建定时任务

作者: rollingstarky | 来源:发表于2018-12-14 10:29 被阅读7次

    Linux 系统里的 cron 守护进程,可以跟随系统启动,是一个用来创建定时任务的基本工具。
    所谓定时或计划任务,指的是在某些特定的时间点自动地执行特定的命令
    这些相对应的时间点和命令可以在其配置文件 Crontab 中设置。

    Crontab

    crontabcron table 的缩写,是 cron 程序的配置文件。其中包含了对每一条计划任务的具体配置。
    可以在命令行中使用 crontab -e 命令对该配置文件进行编辑。

    使用限制
    • 只有当用户的账号出现在 /usr/lib/cron/cron.allow 文件中时,该用户才可以使用 crontab 命令
    • /usr/lib/cron/cron.allow 文件不存在,而用户的账号没有出现在 /usr/lib/cron/cron.deny 文件中,该用户可以使用 crontab 命令
    • 当只存在 cron.deny 文件且该文件内容不为空,则系统中所有用户都可以使用 crontab
    • 两个文件都不存在时,则只有 root 用户可以访问 crontab
    命令选项
    • crontab filename 从 filename 文件中导入配置,并替代之前的内容
    • crontab -e 编辑配置文件 crontab 的内容,定义计划任务
    • crontab -l 列出当前用户已经定义好的计划任务
    • crontab -r 移除当前用户的 crontab 配置文件(删除该用户所有的计划任务)
    配置文件格式

    crontab 配置文件中的每一行内容都代表了对某个计划的定义,一共分成 6 个字段。前 5 个字段定义时间,最后一个字段表明执行的命令。具体如下:
    minute hour day month weekday command

    各时间字段的含义和取值范围如下:

    字段 描述 取值范围
    minute 具体某分钟 0 到 59
    hour 具体某小时 0 到 23
    day 一个月内的某天 1 到 31
    month 具体某个月份 1 到 12
    weekday 一周内的某天 0 到 6(0=周日)

    时间字段的合法格式:

    • 单独的数字(n):表示当前时间单位下某个特定的时间点
    • - 连接的两个数字(n1-n2):表示当前时间单位下的某个时间范围
    • 由逗号分隔的多个数字或范围(n1,n2,n3...):表示当前时间单位下多个时间点(段)
    • 星号(*):表示当前时间范围下的所有时间点(段)
    • 时间范围和步长(n1-n2/n):表示在某个时间范围内,每隔一段固定的时长,执行一次特定的命令

    如:

    minute hour day/month month day/week 任务执行时间
    30 9 14 3 * 每年3月14号的上午9点30分
    0 2 * * 6 每个周六的凌晨2点整
    45 8 * * 1-5 每周一到周五的上午8点45分
    0 0 1,15 * * 每个月1号或15号半夜0点
    0 * 13 * 5 每个月13号的整点,或者每个周五的整点
    */10 * * * * 每隔10分钟

    二、配置示例

    1. 30 1 * * * find /tmp -atime +3 -type f -exec rm -f {} ';'
      每天凌晨1点半,使用 find 命令查找 /tmp 目录下所有3天以上没有被访问过的文件,并将它们全部删除
    2. 30 2 * * 1 cd /home/joe/project; make
      每天凌晨2点半,进入 /home/joe/project 目录并执行 make 命令

    相关文章

      网友评论

        本文标题:Linux 使用 crontab 创建定时任务

        本文链接:https://www.haomeiwen.com/subject/clsvhqtx.html