4

好吧,我正在考虑创建一个依赖于 cronjob 的 webscript。
我想知道,它是否会对 crontabs 的数量造成任何服务器损坏?

假设我每天要完成 50 个 crontab,它会伤害服务器吗?如果不是,在 512MB 内存的 linux 服务器中添加的最大 crontab 数量是多少

4

1 回答 1

1

当您创建新作业时,cron守护进程调用函数job_add( job.c),该函数将内存分配给作业并将其添加到作业列表的尾部。该作业是在堆上分配的,所以理论上你只受到机器上安装的 RAM 的限制。

CRON 代码中的一些注释:

职位结构:

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,您可以在此处查看代码:cron ubuntu source

于 2012-09-06T18:24:36.227 回答