提到定时任务,我们通常会想起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. Myeclipse10 安装 破解 激活(含安装包,激活软件 免费)

    参考博客: https://www.cnblogs.com/gzhnan/articles/9536275.html 注意 安装完成之后一定不要点 Launch Myeclipse 下载地址: htt ...

  2. 7.linux磁盘管理 分区 建立文件系统 挂载使用

    一.磁盘管理 分区  建立文件系统  挂载使用   逻辑卷建立  磁盘阵列的建立  磁盘配额设定     fdisk -l       查看磁盘信息     df -Th        查看硬盘对应的 ...

  3. c++ homework 1

    先交作业(急促) 电梯作业 elevator (不知道为啥,我BIN文件夹建立不了.) PTA练习 如图 如图

  4. php的IP转换成整型函数ip2long()易出现负数

    php中将IP转换成整型的函数ip2long()容易出现问题,在IP比较大的情况下,会变成负数.如下<?php$ip = "192.168.1.2";$ip_n = ip2l ...

  5. Framework7 + Angular 开发问题解决汇总

    本篇主要汇总一下使用Framework7 + Angular 开发中遇到的一些难点及我的解决方法,以后再遇到会在这里继续更新. 一.页面表格按需加载 情况描述:默认加载10条,在用户上拉页面是再进行下 ...

  6. 使用python显示当前系统中的所有进程并关闭某一进程

    环境: Windows 10操作系统 python idle 原理: 调用windows系统自带的命令task,该命令使用方式: 第一步.调用cmd命令行,显示当前系统中所有进程: Win+R-> ...

  7. python @abstractmethod

    1.写在前面 由于python 没有抽象类.接口的概念,所以要实现这种功能得abc.py 这个类库 2.@abstractmethod特点 @abstractmethod:抽象方法,含abstract ...

  8. mysql中的sql-mode导致的datetime类型字段不能为0000

    问题描述: 在执行建表语句的时候,出现invalid default datetime value '0000-00-00 00:00:00',从字面意思看,就是不合法的默认值'0000-00-00 ...

  9. Ubuntu18.04修改主机名和网卡地址

    date: 2019-06-26 09:56:04 author :headsen chen notice :个人原创 1,Ubuntu18.04 设置固定IP: 2,Ubuntu 18.04 设置主 ...

  10. springboot之freemarker 和thymeleaf模板web开发

    Spring Boot 推荐使用Thymeleaf.FreeMarker.Velocity.Groovy.Mustache等模板引擎.不建议使用JSP. 一.Spring Boot 中使用Thymel ...