En el handbook de FreeBSD tenemos instrucciones concretas sobre como configurar Cron, en ese mismo manual podemos encontrar una parte muy interesante en la que muestra como ejecutar un script/binario exactamente igual como lo harÃa Cron, de este modo podemos debugear cualquier tipo de problema.
Primero obtenemos las variables de entorno presentes en Cron ejecutando env y guardando la salida a un fichero:
*/1 * * * * env > /tmp/env
Obtenemos las variables utilizadas en la ejecución de Cron:
LOGNAME=kr0m
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/home/kr0m/bin
HOME=/home/kr0m
SHELL=/bin/sh
Finalmente ejecutamos el script exactamente igual como lo harÃa Cron, de este modo podemos ver si dá algún tipo de problema:
Siempre, siempre, siempre ejecutar los scripts de este modo antes de crontabearlos ya que si no lo hacemos puede que confiemos en su ejecución y realmente no funcionen.
Si el Cron precisa de alguna entrada por parte del usuario o si realiza alguna operación vÃa SSH y la key está protegida siempre podemos utilizar Expect tal como hicimos en este artÃculo anterior .