Estoy usando el contenedor docker Mongo y estoy intentando hacer una copia de seguridad a través de un script bash. El script, ejecutado por sí solo, funciona bien. También puedo ver en syslog que cron se está ejecutando pero el comando no aparece. Si abro mi archivo con crontab -e, guardo y salgo (:wq), luego reinicio cron, el trabajo funciona bien.
Aquí está la sección relevante de mi dockerfile:
ADD mongocron /etc/cron.d/ RUN tr -d '\015' < /etc/cron.d/mongocron > /etc/cron.d/mongocron #RUN touch /etc/cron.d/mongocron #RUN echo "* * * * * /db_scripts/MongoDBBackup.sh >> /db_scripts/logs/backup.log\n" > /etc/cron.d/mongocron RUN crontab /etc/cron.d/mongocron RUN chmod 0644 /etc/cron.d/mongocronEsto es lo que hay en el archivo mongocron:
* * * * * /db_scripts/MongoDBBackup.sh >> /db_scripts/logs/backup.log Esta es la salida de syslog antes de volver a guardar: 
Reiniciar cron por sí solo no lo soluciona. Tengo la sensación de que tiene algo que ver con los finales de línea, por eso ves la estrategia de "eco" comentada en el archivo acoplable con una nueva línea. También verifiqué (antes de guardar) que mi comando se muestra cuando crontab -l
También me he enfrentado a este problema y el motivo fue una nueva línea faltante al final del archivo. La respuesta de @opHASnoNAME es correcta, pero cuando comienza a funcionar solo después de editar, la razón es la nueva línea. Su editor simplemente lo agrega por defecto.
Estaba luchando con el mismo problema en el pasado.
Aquí hay un ejemplo de trabajo, probado en la naturaleza, tomado de nuestro DevBlog .
FROM ubuntu:latest ADD start.sh /bin/start.sh RUN chmod +x /bin/start.sh # Add crontab file in the cron directory ADD crontab /etc/cron.d/thecron # Give execution rights on the cron job RUN chmod 0644 /etc/cron.d/thecron # Create the log file to be able to run tail RUN touch /var/log/cron.log # start script CMD /bin/bash /bin/start.shEl start.sh, creo que no necesita la parte con exportación de variables env.
# export all environment variables to use in cron env | sed 's/^\(.*\)$/export \1/g' > /root/envs.sh chmod +x /root/envs.sh # Run the command on container startup cron && tail -f /var/log/cron.logEl archivo Cron, copiado mientras se construía la imagen.
0 1 * * * root . /root/envs.sh;/bin/backup.sh >> /var/log/cron.log 2>&1