Conflicto entre día y día de la semana, malentendidos con los intervalos, tareas solapadas
1. Confusión con el número del día de la semana — en cron el día de la semana va de 0 a 6, y el 0 es domingo. Muchas implementaciones también aceptan el 7 como domingo, pero es un error habitual confundir el 1 con el domingo y desplazarse un día. El lunes es 1 y el viernes es 5.
2. Indicar a la vez el día del mes (day-of-month) y el día de la semana (day-of-week) — si defines ambos campos con un valor distinto de *, la mayoría de los cron se ejecutan si coincide cualquiera de los dos (no es un AND, sino un OR). Ejemplo: 0 0 13 * 5 se ejecuta 'el día 13 o cada viernes'. No es 'solo el viernes 13'.
3. Malentendido del intervalo */n — */15 se ejecuta en intervalos de 15 a partir de 0, es decir, en los minutos 0·15·30·45. Si usas un valor que no divide exactamente 60, como */40, se ejecuta solo en los minutos 0 y 40 y luego salta al minuto 0 de la hora siguiente, por lo que el intervalo se vuelve irregular.
4. Confusión de zona horaria — cron suele funcionar con la zona horaria del servidor (normalmente UTC). Si escribes la expresión pensando en la hora local, en realidad se ejecutará a otra hora. La zona horaria se trata en detalle en la guía aparte de abajo.
5. Tareas solapadas — si el tiempo de ejecución supera la siguiente hora programada, una nueva tarea puede iniciarse antes de que termine la anterior. En las tareas que tardan mucho es más seguro añadir un bloqueo (lock) o una protección contra ejecuciones duplicadas. Valida de antemano la expresión que escribas con las próximas ejecuciones de la herramienta de arriba.