2010-10-20 86 views
31

如何“现代” cron守护内部安排自己的工作?一些crond用于通过at每隔一段时间安排一次运行。所以在crontab写出后,crondcron如何在内部安排工作?

  1. 解析所有未来事件的crontab和睡眠间隔?
  2. 投票聚集的crontab数据库的每一分钟,以确定当前时间的安排模式相匹配?
  3. 其他?

感谢,

回答

44

在这个问题上听到一些蟋蟀。好“醇RTFC一些离散事件仿真试卷和维基百科:

http://en.wikipedia.org/wiki/Cron#Multi-user_capability

这个cron的使用的算法是 如下:

  1. 在启动时,查找文件在主目录 所有帐户持有人中名为.crontab。
  2. 对于找到的每个crontab文件,决定在未来 在下一次每个命令是要运行。
  3. 放置福兰特 - 马利事件列表上那些命令他们 相应的时间和他们的“五 场”时间指定。
  4. 进入主循环:
    1. 检查在队列头部的任务项,计算在未来 是多远运行。
    2. 睡眠那段时间。
    3. 在觉醒和验证正确的时间后,执行任务 队列的头部(在后台) 与 用户的特权创建它。
    4. 确定下一次在将来运行此命令,并把 回事件列表上当时
+1

基于对'cron'了'man'页面上,它看起来就像它每分钟醒来检查它是否应该运行一样:“然后cron每分钟唤醒一次,检查所有存储的crontabs,检查每个命令是否应该在当前分钟运行。”这是来自安装在Debian上的Vixie Cron(由Paul Vixie编写)。我认为你所描述的算法在每分钟醒来时都花费太高。 – Paul 2016-09-14 02:45:04

+1

这里的手册页:http://www.unix.com/man-page/debian/8/cron/ – Paul 2016-09-14 02:58:15

+0

我希望我能在网上找到的地方一个福兰特 - 马利事件列表的描述。这是一个常见的数据结构吗? – 2018-01-28 20:14:24