Linux 的 Crond(二)
最近由于工作中用到了crond,之前对crond不是很了解,只知道咋用,但是这次需要考虑好多情况,所以又深入了解了一下crond,下面就以下几个问题来谈谈crond。
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
如何避免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);
}
把crond 服务关了,会影响正在执行的job吗?
据我测试所知,关闭crond服务不会影响正在执行job的进程,当job执行完后,执行job的进程才会自动退出。
测试过程如下:
- 编写一个job,然后使用任务调度 执行这个任务(注意要将任务的执行周期要设置的比任务的执行时间短很多,这样效果明显,具体crond怎么使用请参考https://www.cnblogs.com/zhuchenglin/p/8758444.html )。
- 此时使用ps命令查看一下执行的脚本进程个数,预计几个周期以后,再查看一下执行脚本的进程个数,这时个数比之前查看的应该明显增多
- 将crond服务关掉,立刻查看进程个数,此时进程个数应该变化不大,过几个周期之后再查看进程个数,应该会有所减少。
crond 运行原理
其实上面的几个问题如果了解Linux定时任务的运行原理的话,应该会很容易。在这里推荐一篇博客Cron运行原理, 里面讲到了crond的工作流,感兴趣的小伙伴可以好好研究研究。
如需转载,请注明出处:https://www.cnblogs.com/zhuchenglin/p/11514777.html
Linux 的 Crond(二)的更多相关文章
- Linux设备管理(二)_从cdev_add说起
我在Linux字符设备驱动框架一文中已经简单的介绍了字符设备驱动的基本的编程框架,这里我们来探讨一下Linux内核(以4.8.5内核为例)是怎么管理字符设备的,即当我们获得了设备号,分配了cdev结构 ...
- Linux基础练习题(二)
Linux基础练习题(二) 1.复制/etc/skel目录为/home/tuer1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. [root@www ~]# cp -r ...
- linux定时任务crond export变量问题
linux定时任务crond export变量问题 1)我写了一个重启resin的脚本,由于业务原因,需要定时在某一个时间重启下resin服务器,于是就在 crontab里配置了如下内容: 50 17 ...
- Linux网络编程(二)
Linux网络编程(二) 使用多进程实现服务器并发访问. 采用多进程的方式实现服务器的并发访问的经典范例. 程序实现功能: 1.客户端从标准输入读入一行文字,发送到服务器. 2.服务器接收到客户端发来 ...
- 运维之Linux基础(二)
运维之Linux基础(二) 1. file 命令基期用法 2. 文件系统 Linux的文件系统结构是树状结构,所有的文件都在/root跟目录下 /boot:系统启动相关的文件, 如:内核.initrd ...
- Linux学习之二-Linux系统的目录结构
Linux学习之二-Linux系统的目录结构 在Linux的根目录下,有很多的目录,但是需要记住,对于Linux而言,一切皆文件.因此此处的目录也是文件.用ls / 命令就能看到根目录下的各类不同的目 ...
- Linux学习笔记(二) 文件管理
了解 Linux 系统基本的文件管理命令可以帮助我们更好的使用 Linux 系统,以下介绍几个常用的文件管理命令 1.pwd pwd 是 Print Working Directory 的简写,用于显 ...
- Linux命令-文本编辑(二)
Linux命令-文本编辑(二) Linux mtype命令 mtype为mtools工具指令,模拟MS-DOS的type指令,可显示MS-DOS文件的内容. 语法: mtype [-st][文件] 参 ...
- Linux命令-文件管理(二)
Linux命令-文件管理(二) Linux gitview命令 Linux gitview命令用于观看文件的内容,它会同时显示十六进制和ASCII格式的字码. 语法:gitview [-bchilv] ...
- Linux进程管理(二)
目录 Linux进程管理(二) 参考 vmstat命令 top命令 Linux进程管理(二)
随机推荐
- js-04-函数学习
一.什么为函数? 函数是用来执行某些特定功能的代码,为了减少代码的重复使用,将函数作为代码使用,在需要时随时调用使用. 二.函数的声明(函数名严格区分大小写) 1.function命令 functio ...
- table表格中的 colspan rowspan cellpadding cellspacing
横跨两列的单元格: colspan 属性规定单元格可横跨的列数 colspan="2" <table border="1"> <tr> ...
- 邬江兴院士:工业互联网安全&拟态防御
尊敬的郑院士.曹书记.张秘书长,各位学术界的同仁们,很高兴在第一届工业互联网学术专题论坛上发言.我今天想谈的问题是工业互联网,这个概念很热,前景也很美好,很诱人.但是我认为工业互联网的安全挑战更严峻, ...
- c#串口通信并处理接收的多个参数
最近摸索做个上位机,简单记录一下关键的几个部分 c#做串口通信主要使用的是System.IO.Ports类,其实还是十分方便的 最终效果如下: 千万不要忘记了下面这个 填写串口相关配置 我们可以通过G ...
- 使用 Apache FOP 2.3 + docbook-xsl-ns-1.79.1 转换 Docbook 5.1 格式的 XML 文档成 PDF/RTF 文件
使用 Docbook 编写折桂打印平台系统.折桂上传平台系统的产品文档,原因基于如下两点: 第一,文档的不同章节,可使用不同的 .xml 文件,由不同人员分别撰写,图片文件在XML文章中用相对目录方式 ...
- 误删mysql root账户
看这个账户有点碍眼就删除了,结果异常了mysql> select user,host from mysql.user;+---------------+-------------+| user ...
- 好程序员web前端分享前端学习路线自学如何找到工作
好程序员web前端分享前端学习路线自学如何找到工作,自学能不能学会WEB前端并且找到WEB前端开发岗位的工作取决于自身条件,如果基础好,自律性强那么将会容易很多,还有就是自学最难克服的并不是知识点,而 ...
- git结合项目基本使用
学习博客:1,史上最浅显易懂的Git教程! 2,结合项目具体使用 3,常用命令快速查看 4,git stash 用法总结和注意点 一.git的工作原理和工作流程 Workspace:工作区 Index ...
- Java之线程安全
什么是线程安全? 如果有多个线程在同时运行,而这些线程可能会同时运行这段代码.程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的. 什么是线程安全问题? ...
- Python文件操作:文件的打开关闭读取写入
Python文件操作:文件的打开关闭读取写入 一.文件的打开关闭 Python能以文本和二进制两种方式处理文件,本文主要讨论在Python3中文本文件的操作. 文件操作都分为以下几个步骤: 1.打开文 ...