博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Crontab 定时任务
阅读量:5798 次
发布时间:2019-06-18

本文共 1624 字,大约阅读时间需要 5 分钟。

对于做过 Web 开发的人来说,定时任务这个东西应该不会感到陌生;而说到定时任务,就应该都会想到 Crontab ,即使想不到,百度谷歌一下,返回的大部分结果都是指向 Linux 的 Crontab 的!

最近在找工作,除了面试之外,倒也没什么重要的事情了。趁着有时间,正好总结一下 Crontab 的知识点,万一刚好被哪个面试官问道了呢 ^_^

我现在还记得第一次使用 Crontab 是一个什么场景。当时是自己一个人独立开发一个游戏金币商城,主要服务的对象是海外的客户,包括美国、泰国等。金币商城的默认币种是美元($),当然可以切换成泰铢(฿)、欧元(€)等。币种之间的转换是以美元为单位,根据各币种与美元之间的汇率来转换的。

商城开发完成,上线一段时间之后,老板突然找到我说,“小陈啊,泰国有个家伙买了 10000 龙之谷的 金币,它付款的金额怎么不对啊?”。我就赶紧检查是计算错误呢还是什么其他原因了。

后来发现是币种之间的汇率每天变化造成的,后来通过 Crontab 定时更新汇率数据来避免这个问题。

就这样,我了解到了 Crontab。

关于 Crontab 命令

命令语法:

crontab [-u user] [-l | -r | -e]

常用参数的含义:

参数 | 含义

---|---
-u user | 指定特定的用户;如果该选项缺省,则默认操作命令执行者的
-l | 显示当前的定时任务
-r | 删除当前的定时任务
-e | 编辑当前的定时任务

Crontab 任务的语法
*   *   *   *   *   命令|   |   |   |   ||   |   |   |   +---> 星期几(0 ~ 6),0 = 星期天|   |   |   +-------> 月份(1 ~ 12)|   |   +-----------> 几号(1 ~ 31)|   +---------------> 小时(0 ~ 23)+-------------------> 分钟(0 ~ 59)

如上所示,Crontab 任务由两部分组成,前面星号部分代表时间,后面代表需要执行的命令。

  • 星号、字段可以设置为星号 * ,表示“从头到尾”
    例如在分钟那里设置 * ,则表示每分钟执行一次
  • 范围、范围由两个数字加中间一个连字符 - 表示,表示某个区间
    例如在小时那里设置 12-15,表示在 12131415 小时
  • 列表、一个由逗号隔开的数字或范围的列表是允许的
    例如 1,2,5,9 或者 0-4,8-12
  • 步数值、步数值可以和范围一起使用
    例如在小时那里设置 10-18/2 ,表示在 10 到 18 小时之间每两小时
    当然,这样子也是可以的 */2,表示没两小时
一些例子

看语法总是枯燥的,来看几个例子就会明白了。

首先是打开并编辑当前用户的 Crontab 任务:

crontab -e

在终端上使用上面命令即可。

  1. 每分钟执行一次命令

    */1 * * * * date >> /tmp/test.log
  2. 每小时执行一次命令

    0 * * * * date >> /tmp/test.log
  3. 每天凌晨 3 点执行一次命令

    0 3 * * * date >> /tmp/test.log
  4. 在每天的第 9、10、12、17 小时执行一次命令

    0 9,10,12,17 * * * date >> /tmp/test.log
  5. 在每月的 1 ~ 10 号的 9、18 小时的每 10 分钟执行一次命令

    */10 9,18 1-10 * * date >> /tmp/test.log
最后

Crontab 是个常用的定时任务工具,但是它的最小时间单位是分钟,也就是说,如果你想设置精确到秒钟的定时任务,那么 Crontab 就无能为力了。

但是我有在 的文档中看到,他已经实现了一个毫秒级别的定时器,如果有需求,可以研究研究哈。

转载地址:http://wvsfx.baihongyu.com/

你可能感兴趣的文章
(干货)Linux学习资源推荐
查看>>
蓝图(Blueprint)详解
查看>>
Spark之SQL解析(源码阅读十)
查看>>
Android图片添加水印图片并把图片保存到文件存储
查看>>
C#字符串的不变性
查看>>
前端路由简介以及vue-router实现原理
查看>>
比特币系统采用的公钥密码学方案和ECDSA签名算法介绍——第二部分:代码实现(C语言)...
查看>>
分享15款很实用的 Sass 和 Compass 工具
查看>>
AMD优势: 与众不同 选择丰富
查看>>
玩转高性能超猛防火墙nf-HiPAC
查看>>
简单按日期查询mysql某张表中的记录数
查看>>
自动化部署之jenkins发布PHP项目
查看>>
C/C++编程可用的Linux自带工具
查看>>
三种数据分析法提升电商运营
查看>>
哪个线程执行 CompletableFuture’s tasks 和 callbacks?
查看>>
《数据科学与大数据分析——数据的发现 分析 可视化与表示》一2.10 练习
查看>>
Oracle ASM 翻译系列第六弹:高级知识 如何映射asmlib管理的盘到它对应的设备名...
查看>>
多线程之volatile关键字
查看>>
如何判断webview是不是滑到底部
查看>>
Raptor实践2——控制结构
查看>>