免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 913 | 回复: 0
打印 上一主题 下一主题

cron - linux 下的定时执行服务 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-30 16:38 |只看该作者 |倒序浏览
最近的工作内容涉及到一些定时执行的job,因此研究了下cron工具的代码(crond.c)。crond的主程序很简单,如下:
------------------------------------
for (;;) {
sleep((sleep_time + 1) - (short) (time(NULL) % sleep_time));//每分钟循环一次;
...
CheckUpdates();//主程序根据cron.update文件的内容更新自身的job数据库;
...
TestJobs(t1, t2);//检查哪些具体的job需要在此时执行并做标记;
...
RunJobs();//执行具体的job;
...
}
------------------------------------
  重点是 CheckUpdates() 这个函数,它每次先检查工作目录下有无cron.update文件,如果没有,该函数跳出,如果有,则读入其内容并继续执行。
  cron.update文件只简单保存一个任务文件的名字(每个任务文件对应一个Linux用户名,保存着该用户的所有定时执行的job条目),比如:root或user1 。当CheckUpdates() 从cron.update文件中读入root或user1时,就会自动找到root或user1这个文件,并重新读入其中记录的job条目.最后,CheckUpdates() 函数会自动删除cron.update文件。
  
  因此,如果根用户root给自己的root文件(root账户在启用cron服务时对应的job文件)加了一条任务,就应该紧接着再生成cron.update文件,并且只记录"root"这个名字,然后crond主程序会在下一分钟开始时自动检测到并及时更新。当然,cron作为linux的一个程序套件,它有crontab这个专门的配置工具供用户使用。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/97771/showart_1949678.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP