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进程管理(二)
随机推荐
- Windows宏病毒利用
背景: 最近忙的飞起,各种事情,不想吐槽,因为某些事情,还吃了口屎,啧啧啧..... 常见的钓鱼,社工基本技术都是这种,什么鱼叉,水坑,社工,投毒之类的,APT 攻击惯用伎俩. 那么今天主要利用Win ...
- 苹果_公司开发者账号_注册Apple ID
本文所有网站入口为developer.apple.com 注册Apple ID 注意事项:目前注册信息尽量用拼音或英文,姓名格式正确,记住安全问题,出生日期在18岁以上(小于18岁会出现Sorry,y ...
- MySQL解惑——GROUP BY隐式排序
MySQL中GROUP BY隐式排序是什么概念呢? 主要是其它RDBMS没有这样的概念,如果没有认真了解过概念,对这个概念会感觉有点困惑,我们先来看看官方文档的介绍: 官方文档MySQL 5.7 Re ...
- 服务治理-Resilience4j(限流)
Bulkhead Bulkhead一般用于服务调用客户端,用于限定对特定的服务的并发请求数量,起到一下作用:1.防⽌下游依赖被并发请求冲击2.防⽌发⽣连环故障 1.配置规则“order” //允许最大 ...
- 默认值操作符(Freemarker的空值处理)
默认值操作符: 使用形式例如: userName!default_expr 或 userName! 或 (userName)!default_expr 或 (userName)! 这个操作符允许你为可 ...
- 编译原理:直接推导、间接推导、n次推导、规范推导
直接推导,直接运用规则进行的推导 间接推导.n次推导 有两种符号 第一种是,表示多次运用直接推导 第二种是,表示零次或多次运用直接推导 n表示中间的步骤数 规范推导 其实就是最右推导
- 【2期】JVM必知必会
JVM之内存结构图文详解 Java8 JVM内存结构变了,永久代到元空间 Java GC垃圾回收机制 不要再问我“Java 垃圾收集器”了 Java虚拟机类加载机制 Java虚拟机类加载器及双亲委派机 ...
- 13. Go 语言网络爬虫
Go 语言网络爬虫 本章将完整地展示一个应用程序的设计.编写和简单试用的全过程,从而把前面讲到的所有 Go 知识贯穿起来.在这个过程中,加深对这些知识的记忆和理解,以及再次说明怎样把它们用到实处.由本 ...
- 《移动WEB前端高级开发实践@www.java1234.com》——3
React Flux: Flux将一个应用分成四个部分. View: 视图层 Action(动作):视图层发出的消息(比如mouseClick) Dispatcher(派发器):用来接收Actions ...
- kaldi简介及安装
操作系统 : Ubuntu18.04_x64 gcc版本 :7.4.0 简介 Kaldi诞生于2009年的JohnsHopkins University,刚开始项目重点是子空间高斯模型(SGMM)建模 ...