Tengo un comando en mi crontab que no se ejecuta correctamente, esto debería hacer una copia de seguridad de la base de datos todos los días a la hora especificada. Intenté ejecutar el comando en mi terminal y está funcionando correctamente.
Para editar mi crontab yo uso crontab -e
La pestaña cron actual contiene lo siguiente:
# Save online agent status every 2 minutes
*/2 * * * * /usr/bin/python /home/dummy/scm/qt-savu/userstatus.py >> /home/dummy/qt-savu/userstatus.log
# Save Hourly call counts every XX:59
59 * * * * /usr/bin/python /home/dummy/scm/qt-savu/hourlylog.py >> /home/dummy/qt-savu/hourlycc.log
# Backup albatross everyday
58 5 * * * /usr/bin/mysqldump -udummy -ppassword albatross | /bin/gzip > /home/dummy/Documents/backups/`/bin/date +%y.%m%d`.albatross.tar.gz
# Backup bert everyday
58 5 * * * /usr/bin/mysqldump -udummy -ppassword bert | /bin/gzip > /home/dummy/Documents/backups/`/bin/date +%y.%m%d`.bert.tar.gz
Otros comandos en el crontab funcionan correctamente, los comandos que no funcionan son:
# Backup albatross everyday
58 5 * * * /usr/bin/mysqldump -udummy -ppassword albatross | /bin/gzip > /home/dummy/Documents/backups/`/bin/date +%y.%m%d`.albatross.tar.gz
# Backup bert everyday
58 5 * * * /usr/bin/mysqldump -udummy -ppassword bert | /bin/gzip > /home/dummy/Documents/backups/`/bin/date +%y.%m%d`.bert.tar.gz
La salida del registro se ve así
Sep 4 05:56:01 luna CRON[18815]: (dummy) CMD (/usr/bin/mysqldump -udummy -ppassword bert | /bin/gzip > /home/dummy/Documents/backups/`/bin/date '+)
Sep 4 05:56:01 luna CRON[18812]: (CRON) info (No MTA installed, discarding output)
Sep 4 05:56:01 luna CRON[18817]: (dummy) CMD (/usr/bin/mysqldump -udummy -ppassword albatross | /bin/gzip > /home/dummy/Documents/backups/`/bin/date '+)
Sep 4 05:56:01 luna CRON[18813]: (CRON) info (No MTA installed, discarding output)
Como observé, la salida del registro se detiene en /bin/date
.
Respuestas:
%
Es tratado especialmente por cron. Se utiliza para denotar el final de la parte del comando y el comienzo de la entrada estándar. Como tal, debes escapar, como tal:\%
.Desde la página del manual de crontab:
fuente
man 5 crontab
), el sexto campo solo tiene ese caracter especial.