最近由于工作中用到了crond,之前对crond不是很了解,只知道咋用,但是这次需要考虑好多情况,所以又深入了解了一下crond,下面就以下几个问题来谈谈crond。

  1. crond 中指定的job,如果此次没有执行完,下一个执行周期又到了,此时会怎么样呢?

    答:此次job没有执行完的话,下一个执行周期又到了,job会重复执行。用ps命令可以查看,下面是我查看的结果。

    [root@localhost etc]# ps -ef | grep Test
    root 48460 73018 0 18:34 pts/0 00:00:00 grep --color=auto Test
    root 98880 98878 0 18:06 ? 00:00:00 php Test.php
    root 101631 101629 0 18:07 ? 00:00:00 php Test.php
    root 104427 104425 0 18:08 ? 00:00:00 php Test.php
  2. 如何避免crond中job重复执行呢?

    可以参考 crontab 解决周期内未执行完重复执行 这篇博客,文章讲了三种方法(利用了互斥锁),我当时的解决办法是在Reids中设置一个job是否可以执行的标记,伪代码如下:

    //Test.php 文件的主要内容
    $redis = new Redis();
    $keyExist = $redis->exists('job_can_start');
    if (!$keyExist) {
    $redis->set('job_can_start',1);
    $canExcute = 1;
    } else {
    $canExcute = $redis->get('job_can_start');
    }
    if ($canExcute){
    $redis->set('job_can_start', 0);
    //下面写具体的job
    ………… $redis->set('job_can_start', 1);
    }
  3. 把crond 服务关了,会影响正在执行的job吗?

    据我测试所知,关闭crond服务不会影响正在执行job的进程,当job执行完后,执行job的进程才会自动退出。

    测试过程如下:

    1. 编写一个job,然后使用任务调度 执行这个任务(注意要将任务的执行周期要设置的比任务的执行时间短很多,这样效果明显,具体crond怎么使用请参考https://www.cnblogs.com/zhuchenglin/p/8758444.html )。
    2. 此时使用ps命令查看一下执行的脚本进程个数,预计几个周期以后,再查看一下执行脚本的进程个数,这时个数比之前查看的应该明显增多
    3. 将crond服务关掉,立刻查看进程个数,此时进程个数应该变化不大,过几个周期之后再查看进程个数,应该会有所减少。
  4. crond 运行原理

    其实上面的几个问题如果了解Linux定时任务的运行原理的话,应该会很容易。在这里推荐一篇博客Cron运行原理, 里面讲到了crond的工作流,感兴趣的小伙伴可以好好研究研究。

如需转载,请注明出处:https://www.cnblogs.com/zhuchenglin/p/11514777.html

Linux 的 Crond(二)的更多相关文章

  1. Linux设备管理(二)_从cdev_add说起

    我在Linux字符设备驱动框架一文中已经简单的介绍了字符设备驱动的基本的编程框架,这里我们来探讨一下Linux内核(以4.8.5内核为例)是怎么管理字符设备的,即当我们获得了设备号,分配了cdev结构 ...

  2. Linux基础练习题(二)

    Linux基础练习题(二) 1.复制/etc/skel目录为/home/tuer1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. [root@www ~]# cp -r ...

  3. linux定时任务crond export变量问题

    linux定时任务crond export变量问题 1)我写了一个重启resin的脚本,由于业务原因,需要定时在某一个时间重启下resin服务器,于是就在 crontab里配置了如下内容: 50 17 ...

  4. Linux网络编程(二)

    Linux网络编程(二) 使用多进程实现服务器并发访问. 采用多进程的方式实现服务器的并发访问的经典范例. 程序实现功能: 1.客户端从标准输入读入一行文字,发送到服务器. 2.服务器接收到客户端发来 ...

  5. 运维之Linux基础(二)

    运维之Linux基础(二) 1. file 命令基期用法 2. 文件系统 Linux的文件系统结构是树状结构,所有的文件都在/root跟目录下 /boot:系统启动相关的文件, 如:内核.initrd ...

  6. Linux学习之二-Linux系统的目录结构

    Linux学习之二-Linux系统的目录结构 在Linux的根目录下,有很多的目录,但是需要记住,对于Linux而言,一切皆文件.因此此处的目录也是文件.用ls / 命令就能看到根目录下的各类不同的目 ...

  7. Linux学习笔记(二) 文件管理

    了解 Linux 系统基本的文件管理命令可以帮助我们更好的使用 Linux 系统,以下介绍几个常用的文件管理命令 1.pwd pwd 是 Print Working Directory 的简写,用于显 ...

  8. Linux命令-文本编辑(二)

    Linux命令-文本编辑(二) Linux mtype命令 mtype为mtools工具指令,模拟MS-DOS的type指令,可显示MS-DOS文件的内容. 语法: mtype [-st][文件] 参 ...

  9. Linux命令-文件管理(二)

    Linux命令-文件管理(二) Linux gitview命令 Linux gitview命令用于观看文件的内容,它会同时显示十六进制和ASCII格式的字码. 语法:gitview [-bchilv] ...

  10. Linux进程管理(二)

    目录 Linux进程管理(二) 参考 vmstat命令 top命令 Linux进程管理(二)

随机推荐

  1. cobbler无人值守

    一.背景介绍 ​ 作为运维,在公司经常遇到一些机械性重复工作要做,例如:为新机器装系统,一台两台机器装系统,可以用光盘.U盘等介质安装,1小时也完成了,但是如果有成百台的服务器还要用光盘.U盘去安装, ...

  2. stream根据条件过滤List<Object>

    List<String> filterUser= new ArrayList<>(); filterUser.add("张三"); List<User ...

  3. String判断为空的方式

    今天遇到的笔试题: //这样的判空方式是否正确 if(!str.equals("")&&str!=null) 之前我一直都是这么写的,哪知道有什么问题呀,然后面试官 ...

  4. mybatis基础 笔记

    Mybatis依赖<!--测试--> <dependency>      <groupId>junit</groupId>      <artif ...

  5. openstack-neutron安装与配置

    一.实验目的: 1.理解neutron服务在OpenStack中的作用 2.掌握在控制节点上安装配置neutron的方法和步骤 3.掌握在计算节点上安装与配置neutron的方法和步骤 二.实验步骤: ...

  6. 十一、Powell算法(鲍威尔算法)原理以及实现

    一.介绍 Powell算法是图像配准里面的常用的加速算法,可以加快搜索速度,而且对于低维函数的效果很好,所以本篇博客主要是为了介绍Powell算法的原理以及实现. 由于网上已经有了对于Powell算法 ...

  7. alter对话框处理:

    from selenium import webdriverd = webdriver.Firefox()d.get('file://C:\\我的代码\\selenium自动化测试\\alter.ht ...

  8. 高阶函数&&高阶组件(二)

    高阶组件总共分为两大类 代理方式 操纵prop 访问ref(不推荐) 抽取状态 包装组件 继承方式 操纵生命周期 操纵prop 代理方式之 操纵prop 删除prop import React fro ...

  9. Python Django 支付宝 扫码支付

    安装python-alipay-sdk pip install python-alipay-sdk --upgradepip install crypto 如果是python 2.7安装0.6.4这个 ...

  10. python的安装以及前景

    1.检查软件是否安装:在cmd命令行上输oython 假如环境已经配置好环境变量 则会显示为python的inf: 2.下载并安装python 打开python官网:https://www.pytho ...