さて、私はcronjobに依存するWebスクリプトを作成することを考えています。
私は疑問に思っています、それはcrontabの量に対してサーバーに損害を与えることはありますか?
毎日50個のcrontabを実行する必要があるとしましょう。サーバーに悪影響を与えることはありますか?いいえの場合、512MBのメモリでLinuxサーバーに追加されるcrontabの最大量はいくつですか。
新しいジョブを作成すると、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
、ここでコードを見ることができます:cronubuntusource。