提到定时任务,我们通常会想起linux的crontab,可以说服务器端大部分定时任务都是由它完成的。这东西固然耗用,但是坑也不少。

 

这不,昨天我在部署一个备份任务的时候,就不幸踩坑了。差点酿成大祸。

 

首先,介绍一下crontab的特点:

  1. 此命令为系统自带命令,可通过crontab + 选项直接调用。相当于修改/var/spool/cron/usename文件。

    常用选项如下:

    选项 含义
    -e 编辑该用户下的crontab配置
    -r 删除该用户下的crontab配置
    -l 浏览该用户下的crontab配置

     

  2. 此命令非特权命令,任何用户可以调用。如下:

    [root@master cron]# whereis crontab
    crontab: /usr/bin/crontab /etc/crontab /usr/share/man/man1/crontab.1.gz /usr/share/man/man1p/crontab.1p.gz /usr/share/man/man5/crontab.5.gz

     

  3. 此命令有服务,可以通过crond来启动、停止、查看状态。

 

其次,介绍一下crontab的用法:

crontab包含六个参数,前五个是指定时间的,最后一个是命令参数,指定执行什么命令或脚本。

前五个参数分别是:

分: 取值0-59,*代表每分钟执行一次

时: 取值0-23,*代表每小时执行一次

日: 取值1-31,*代表每天执行一次

月: 取值1-12,*代表每月执行一次

周: 取值0-7,*代表每周执行一次

命令:执行命令或脚本即可。如sh xxx.sh, py xxx.py等。

例如,我们可以如此添加crontab命令。

 

* * * * * /bin/sh test.sh  #每分钟执行test.sh
0 */60 * * * /bin/sh test.sh #每小时0分执行test.sh
* */1 * * * /bin/sh test.sh #每小时执行test.sh???

 

然而,上面说的都不是本文重点,重点在下面!!!

如果时间参数前后冲突,它会怎么办?

我上面的图里边,有一个每小时执行test.sh的定时,我加了问号,这就是我昨天踩的坑。

按照网上一些教程的说法,这句被理解成:

"每隔一个小时的特定分钟执行一次"

但是实际上执行的效果为:

“每分钟执行一次”

后来一分析,发现

* */1 * * * /bin/sh test.sh

这样的写法,系统会理解为,每隔一个小时的每分钟执行一次test.sh。

说白了,每分钟执行一次。

那肯定

迷惑性很强的crontab的更多相关文章

  1. Delphi程序员如何找到高薪的工作?(赚不到钱,原因只有一个,就是他们没有被公司录取。Delphi必须要独自进行深入研究,才能精通,同时也不能自由性太强)

    转帖自:http://www.tommstudio.com/ViewNews.aspx?ID=187http://hi.baidu.com/rarnu/blog/ 本文翻译自<美国优秀经理观念大 ...

  2. 扩展性很强的python实现方式

    一:先上目录结构 二:各个文件的代码 # -*- coding: utf-8 -*- # @Author : Felix Wang # @time : 2018/7/4 16:42 from util ...

  3. 对Delphi控件作用的新理解(控件本身的源代码就是一个很强的工业级源码)

    最近几天,对Delphi控件的含义有了一个新的理解.其实它不仅仅是给程序员提供功能的一个表层调用,控件本身的源代码就是一个很强的工业级源码.而且它的Main例子,往往就已经是半成品.而别的语言里没有那 ...

  4. linux备忘录-例行性工作排程 (crontab)

    例行性工作排程 例行性工作排程分为两类 at at是只执行一次就结束的指令安排.要想使用at,必须要有atd服务的支持. crontab crontab是每隔一段时间自动执行的指令安排.crontab ...

  5. C#实现如何判断一个数组中是否有重复的元素 返回一个数组升序排列后的位置信息--C#程序举例 求生欲很强的数据库 别跟我谈EF抵抗并发,敢问你到底会不会用EntityFramework

    C#实现如何判断一个数组中是否有重复的元素   如何判断一个数组中是否有重复的元素 实现判断数组中是否包含有重复的元素方法 这里用C#代码给出实例 方法一:可以新建一个hashtable利用hasht ...

  6. 为什么你有10年经验,但成不了专家?(重复性刻意训练+反馈修正,练习的精髓是要持续地做自己做不好的,太精彩了)真正的高手都有很强的自学能力,老师和教练的最重要作用是提供即时的反馈(莫非我从小到大学习不好的原因在这里?没有单独刻意训练?) good

    也许简单看书就是没有刻意训练.更没有反馈,所以没有效果 我倒是想起自己,研究VCL源码的时候,都是自己给自己提问,然后苦思冥想.自己解决问题,然后Windows编程水平果然上了一个台阶.对什么叫做“框 ...

  7. MinIO很强-让我放弃FastDFS拥抱MinIO的8个理由

    目前可用于文件存储的网络服务选择有很多,比如阿里云OSS.七牛云.腾讯云等等,但是收费都有点小贵.为了帮公司节约成本,之前一直是使用fastDFS作为文件服务器,准确的说是图片服务器.直到我发现了Mi ...

  8. 例行性工作排程 (crontab)

    1. 什么是例行性工作排程 1.1 Linux 工作排程的种类: at, crontab 1.2 Linux 上常见的例行性工作2. 仅运行一次的工作排程 2.1 atd 的启动与 at 运行的方式: ...

  9. 第十六章、例行性工作排程 (crontab)

    1. 什么是例行性工作排程 1.1 Linux 工作排程的种类: at, crontab 1.2 Linux 上常见的例行性工作 2. 仅运行一次的工作排程 2.1 atd 的启动与 at 运行的方式 ...

随机推荐

  1. loj #2319

    noip2017列队 - resolve 标签:题解 \(n * m\) 的矩阵,每个元素 \((i, j)\) 的标号为 \((i - 1) * m + j\), 每次给出 \((x, y)\), ...

  2. 爬虫(十七):scrapy分布式原理

    一:scrapy工作流程 scrapy单机架构: 单主机爬虫架构: 分布式爬虫架构: 这里重要的就是我的队列通过什么维护?这里一般我们通过Redis为维护,Redis,非关系型数据库,Key-Valu ...

  3. RabbitMQ的安装和管理

    c:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.5.1\sbin>------------------------------- ...

  4. VTK 简单点云数据显示绘制

    基于vtkPolyData,绘制时除了输入点坐标,还需要通过setVerts指定点绘制信息. simplePoints.txt的内容为简单的 xyz,如: 20 20 20 20 20 30 20 2 ...

  5. P2831 愤怒的小鸟——状压

    P2831 愤怒的小鸟 抛物线过原点,只要再找两个就能确定抛物线: 处理出两两之间的抛物线能过哪些点,状态压缩: 但是直接枚举每一条抛物线常数太大会T,所以我们需要预处理一个low_bit表示当前状态 ...

  6. ajax请求数据动态填充之文档与字符串区别手法

    success: function(data){ if(data.status==200){ var realName=data.doc.realName; $("#yishiul" ...

  7. 小程序tabBar的使用

    这个selectedIconPath一定要写,否则选中的那个图片是不会显示的 下面是不写的现象: onTabItemTap的使用---下面的现象说明:只有tab值向哪个页面才会触发.

  8. php手记之04-tp5数据库操作

    //--------查询// 原生sql语句查询 // $ret = Db::query("select * from tp5_user where id>10"); // ...

  9. Java List 和 Array 转化

    List to Array List 提供了toArray的接口,所以可以直接调用转为object型数组 List<String> list = new ArrayList<Stri ...

  10. socket_timeout

    https://github.com/pika/pika/blob/03542ef616a2a849e8bfb0845427f50e741ea0c6/docs/examples/using_urlpa ...