前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux 的 Crond(二)

Linux 的 Crond(二)

作者头像
lin_zone
发布2019-09-16 10:15:13
1.1K0
发布2019-09-16 10:15:13
举报
文章被收录于专栏:LIN_ZONELIN_ZONE

最近由于工作中用到了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是否可以执行的标记$bool,伪代码如下: //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的进程才会自动退出。 测试过程如下:
代码语言:txt
复制
1. 编写一个job,然后使用任务调度 执行这个任务(注意要将任务的执行周期要设置的比任务的执行时间短很多,这样效果明显,具体crond怎么使用请参考[https://www.cnblogs.com/zhuchenglin/p/8758444.html](https://www.cnblogs.com/zhuchenglin/p/8758444.html) )。
2. 此时使用ps命令查看一下执行的脚本进程个数,预计几个周期以后,再查看一下执行脚本的进程个数,这时个数比之前查看的应该明显增多
3. 将crond服务关掉,立刻查看进程个数,此时进程个数应该变化不大,过几个周期之后再查看进程个数,应该会有所减少。crond 运行原理
其实上面的几个问题如果了解Linux定时任务的运行原理的话,应该会很容易。在这里推荐一篇博客

如需转载,请注明出处:https://cloud.tencent.com/developer/article/1505977

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档