Hogyan működik az fcron Debian alatt?

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).

Tartalom átvétel