HOWTO Use the /etc/cron.* infrastructure on Debian

This article is incomplete and was first written in June 2006
for the BeezNest technical website (http://glasnost.beeznest.org/articles/339).
On Debian, an infrastructure is in place in directories /etc/cron.* to extend and improve the crontabs.

Why ?

Usually, crontabs are managed at the user level, which can start crontab -e to edit its own or crontab -l to just list it. This is often not practical and uneasy to manage, because it is hard to search, you cannot keep an history, and you cannot split it in an applications- or whatever-way.

/etc/cron.*

So, the infrastructure composed of /etc/cron.d/, /etc/cron.daily/, /etc/cron.weekly/ and /etc/cron.monthly/ is a solution. As we use directly the filesystem as storage, you gain the abilities to:
  • search easily in those cronjobs stored there, using greps or finds
  • keep an history, or simply a date of last modification
  • split cronjobs in as many scripts or crontab entries as you want
Scripts in those directories whose names include a dot (.) will be ignored.

How ?

As simple (even more) as crontabs, because format of scripts in /etc/cron.d/ is identical to crontabs while in the others /etc/cron.*/, there are regular scripts because the system already knows when to run them based on the name of the directory they belong to.

Behind the scene

All this is made possible because of file /etc/crontab, which in turn executes the scripts in /etc/cron.*/. It even supports anacron out-of-the-box.