什么是cron作业的服务器使用情况?

问题描述:

好吧, 我正在考虑创建一个依赖于cronjob的webscript。
我想知道,它是否会对crontabs的数量造成任何服务器损害?什么是cron作业的服务器使用情况?

可以说我每天要做50个crontabs,它会伤害服务器吗? 如果没有,什么是当你创建一个新的工作cron守护进程调用函数job_addjob.c)要在Linux服务器@ 512MB内存

+0

这可能会更适合[ServerFault](http://serverfault.com)。 – whirlwin

+0

我想如果你的服务器可以做50件事情,那么它可以按照预定的时间间隔做50件事情。 Cron本身非常优化,不会为任务增加任何实际开销。物理内存的数量本身并不是决定性因素。你的_tasks_之一可能会伤害服务器,但_cron_不会。 – David

添加的crontab的最大金额,该功能的alloc内存的工作,将其添加到作业列表的尾部。 工作分配在堆上,所以在理论上你只受到机器上安装的RAM的限制。

从科雷代码的一些注意事项:

作业结构:

typedef struct _entry { 
     struct _entry *next; 
     uid_t   uid; 
     gid_t   gid; 
     char   **envp; 
     char   *cmd; 
     bitstr_t  bit_decl(minute, MINUTE_COUNT); 
     bitstr_t  bit_decl(hour, HOUR_COUNT); 
     bitstr_t  bit_decl(dom, DOM_COUNT); 
     bitstr_t  bit_decl(month, MONTH_COUNT); 
     bitstr_t  bit_decl(dow, DOW_COUNT); 
     int    flags; 
#define DOM_STAR  0x01 
#define DOW_STAR  0x02 
#define WHEN_REBOOT  0x04 
} entry; 

而且用户结构:

typedef struct _user { 
     struct _user *next, *prev; /* links */ 
     char   *name; 
     time_t   mtime;   /* last modtime of crontab */ 
     entry   *crontab;  /* this person's crontab */ 
} user; 

typedef struct _job { 
    struct _job  *next; 
    entry   *e; 
    user   *u; 
} job; 

每个用户crontab条目被定义

您c看到这个结构并不会占用大量的内存。 如果您对cron的工作方式感到好奇,您可以在这里看到代码:cron ubuntu source