好的,我想创建一个依赖于cronjob的webscript... 我在想,如果有大量的crontabs,是否会对服务器造成损害?
假设每天需要完成50个crontab,这会对服务器造成伤害吗? 如果不会,那么在512MB内存的Linux服务器上可以添加的最大crontab数量是多少?
好的,我想创建一个依赖于cronjob的webscript... 我在想,如果有大量的crontabs,是否会对服务器造成损害?
假设每天需要完成50个crontab,这会对服务器造成伤害吗? 如果不会,那么在512MB内存的Linux服务器上可以添加的最大crontab数量是多少?
cron
守护进程调用函数job_add
(job.c
),该函数为作业分配内存并将其添加到作业列表的末尾。
作业在堆上分配,因此理论上您只受限于计算机上安装的RAM。typedef struct _job {
struct _job *next;
entry *e;
user *u;
} job;
每个用户的crontab条目都由以下内容定义:
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;
您可以看到,这个结构体并不占用太多内存。 如果您对的实现方式感到好奇,可以在这里查看代码:cron ubuntu source。