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

4

好的,我想创建一个依赖于cronjob的webscript... 我在想,如果有大量的crontabs,是否会对服务器造成损害?

假设每天需要完成50个crontab,这会对服务器造成伤害吗? 如果不会,那么在512MB内存的Linux服务器上可以添加的最大crontab数量是多少?


这个问题或许更适合发布在 ServerFault 上。 - whirlwin
我想象一下,如果你的服务器能够执行50个任务,那么它可以按计划间隔执行这50个任务。Cron本身已经非常优化,不会给任务增加任何实际开销。仅有的物理内存量并不是决定性因素。你的某个“任务”可能会影响服务器的运行,但是cron不会。 - David
1个回答

1
当您创建一个新的作业时,cron守护进程调用函数job_addjob.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 ubuntu source


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接