Portál AbcLinuxu, 1. května 2025 00:43
Navíc se dokumentace nezmiňuje, jak crond
pozná, že byl opravdu spuštěn v rámci inicializačních skriptů po startu systému a ne ručně později. To mi připadá dost důležité.
Navíc se dokumentace nezmiňuje, jak crond
pozná, že byl opravdu spuštěn v rámci inicializačních skriptů po startu systému a ne ručně později. To mi připadá dost důležité.
Na implementaciu som sa nepozeral, ale nepise si to crond niekde do /var/... ? run_reboot_jobs(db) cron_db *db; { register user *u; register entry *e; int rbfd; #ifdef DEBIAN #define REBOOT_FILE "/var/run/crond.reboot" /* Run on actual reboot, rather than cron restart */ if (access(REBOOT_FILE, F_OK) == 0) { /* File exists, return */ log_it("CRON", getpid(),"INFO", "Skipping @reboot jobs -- not system startup"); return; } /* Create the file */ if ((rbfd = creat(REBOOT_FILE, S_IRUSR&S_IWUSR)) < 0) { /* Bad news, bail out */ log_it("CRON",getpid(),"DEATH","Can't create reboot check file") ; exit(0); } else { close(rbfd); log_it("CRON", getpid(),"INFO", "Running @reboot jobs"); } Debug(DMISC, ("[%d], Debian running reboot jobs\n",getpid())); #endif Debug(DMISC, ("[%d], vixie running reboot jobs\n", getpid())); for (u = db->head; u != NULL; u = u->next) { for (e = u->crontab; e != NULL; e = e->next) { if (e->flags & WHEN_REBOOT) { job_add(e, u); } } } (void) job_runqueue(); }Z toho mi vychází, že pokud cron není v Debianu, tak spustí reboot jobs vždycky a pokud je, tak si to hlídá vytvořením souboru /var/run/crond.reboot, který mu zřejmě debianí rc.init někde smaže. Tato modicikace je součástí debianího diffu. Taky je možné, že si to na jiných systémech hlídá jinak podobně.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.