Egy ideje piszkál a gondolat, hogy a kikapcsolt gép miatt elmaradó, cronnal időzített folyamatokat mégiscsak le kellene futtatni. Néhány saját szkript és a logrotate hiányzik a legjobban. A HUP Wikije szerint az anacront nem fejlesztik tovább. Az fcront ajánlották, hát felraktam. Kicsit meglepődtem, hogy nem cseréli le a Vixie-féle cront, csak mellételepül.
A következő meglepetés a reggeli bootolás után ért, ugyanis e-mailt kaptam az fcrontól: lefuttatta a hajnalra időzített feladatokat. Kicsit utánajárva a dolognak, a következőkre jutottam. Az fcron csomag feltelepítésével létrejön a következő fájl is:
# dpkg -L fcron | tail -1 /usr/sbin/anacron
A fájl valójában egy symlink a /bin/true fájlra. Ezen symlink létrehozásával kiiktatja az alábbi cron jobokat, amelyek a /etc/crontab fájlban vannak megadva:
# m h dom mon dow user command 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
A test -x /usr/sbin/anacron parancs sikeresen lefut (igaz, 0 értékkel tér vissza), mert az anacron fájl létezik és futtatható, így a || utáni parancsok nem lesznek végrehajtva, tehát a cron nem indítja el a napi-heti-havi feladatokat a run-parts paranccsal.
Beletúrva a csomag forrásába (dpkg -x fcron_3.0.1-1_i386.deb) megtalálhatjuk a /var/spool/fcron/systab.orig fájlt:
# cat systab.orig !bootrun(true),nice(15),serial(true) & 03 03 * * * run-parts --report /etc/cron.daily & 17 03 * * 7 run-parts --report /etc/cron.weekly & 02 04 1 * * run-parts --report /etc/cron.monthly
Amint látszik, ezek ugyanazok a bejegyzések, amelyeket az /usr/sbin/anacron symlink létrehozásával hatástalanított az fcron. Innentől kezdve az fcron démon fogja végrehajtani ezeket a feladatokat.
Kb. ugyanez van leírva az fcron README.Debian fájljában is (/usr/share/doc/fcron/), de a fenti részletek nélkül - így talán szemléletesebb.
Hozzászólások
Időzítések szerkesztése
Az időzítéseket az fcrontab paranccsal lehet szerkeszteni, a rendszerszintű bejegyzések pedig a systab (felhasználó)név alatt rejtőznek (fcrontab -e systab).