Table of Contents
cron is a classic Unix daemon for scheduling commands to be executed at a given frequency. A brief history of cron can be found here.
DD-WRT's cron is based on Paul Vixie's cron implementation. It can be enabled by checking Enable in the Administration tab of the DD-WRT web interface or by issuing the command nvram set cron_enable 1.
Before the cron daemon is started, the start_cron function is called to 
prepare the environment. It creates the /var/spool/ and /var/spool/cron/ 
directories if they don't already exist, then creates /tmp/cron.d to store 
cron jobs. On traditional Unix/Linux systems, cron.d is stored in /etc and 
rather than modifying paths in the cron source code, /etc/cron.d is symlinked 
to /tmp/cron.d on DD-WRT. It is important to note that while the /var/ folders 
are persistent across cron processes, cron.d is deleted and recreated not only 
after reboots, but every time cron is started or stopped using 
startservice and stopservice. By default, a cron job called 
check_ps is added which runs every two minutes and monitors daemon activity. 
start_cron will also read the cron_jobs NVRAM setting which is a 
newline separated list of crontab style entries. When start_cron runs, it 
reads the lines from cron_jobs and writes them to 
/tmp/cron.d/cron_jobs. As of DD-WRT v24 SP1, start_cron attempts to copy 
cron.d style files from /tmp/mycron.d/, /jffs/mycron.d/, and /mmc/mycron.d/ to 
/tmp/cron.d/, but a bug in the code prevents it. cron also will read 
/tmp/crontab when it starts, however, unlike /tmp/cron.d/, /tmp/crontab is 
persistent across cron restarts (NOT system restarts), so it is possible to 
stop cron, change /tmp/crontab, and restart cron.
cron reads the contents of /tmp/cron.d/* and /tmp/crontab once and only once 
when cron starts. If you modify the files, delete files, or add files, they 
will not be read until cron is restarted and the files exist at load time. 
This has an irritating consequence when working with /tmp/cron.d/. Anything 
added or changed in /tmp/cron.d/ will not take effect when added. When 
cron is stopped with stopservice, /tmp/cron.d/ is removed and when 
started again, it will only contain check_ps. With the mycron.d functionality 
not working in v24 SP1, the best way to have a persistant crontab that is 
restored on boot is to use the cron_jobs NVRAM setting. The web 
interface provides a textbox to add lines of crontab style entries in the 
Administration tab.
To avoid a potentially massive crontab list stored in NVRAM, the following 
shell script can be used to provide equivalent functionality to using 
/mmc/etc/cron.d, /jffs/etc/cron.d, and /tmp/mycron.d to store persistent crontabs.
Example 1. /jffs/etc/config/cron.startup
#!/bin/sh stopservice cron mkdir /tmp/cron.d echo "*/2 * * * * root /sbin/check_ps" > /tmp/cron.d/start_ps cp -af /tmp/mycron.d/* /tmp/cron.d/ cp -af /mmc/etc/cron.d/* /tmp/cron.d/ cp -af /jffs/etc/cron.d/* /tmp/cron.d/ cron
This script should also be used in place of startservice cron when starting cron. stopservice cron should still be used to stop cron.