Tengo algún problema. Tengo programada la ejecución del script pero cuando llega el momento no pasa nada.
#!/bin/sh
TIME=`date +"%d-%m-%Y"`
cd /var/www/flyer/data/www/
mysqldump -u root -ppasswd --databases db_name --create-options --default- character-set=utf8 --result-file=dump.sql
FILENAME="backup_$TIME.tar.gz"
tar -cpzf ../backups/$FILENAME somefolder dump.sql
rm dump.sql
chown flyer:flyer ../backups/$FILENAME
chmod 666 ../backups/$FILENAME
Cuando ejecuto el script directamente desde ssh como /root/backup.sh, todo funciona como se supone que debe hacerlo. Pero cuando se ejecuta mediante cron, no pasa nada.
grep CRON /var/log/syslog
muestra que se ejecutó (19 de diciembre 01:21:01 vps-8463 /USR/SBIN/CRON[1299]: (root) CMD (sh /root/backup.sh >/dev/null 2>&1) ) pero no Se crea el archivo. Tarea cron: 21 1 * * * sh /root/backup.sh >/dev/null 2>&1
¿Alguna idea de por qué sucede esto?
Respuesta1
Mi primera suposición es que el comando mysqldump no está en la ruta cuando cron ejecuta el script. Intentar:
which mysqldump
Tome el resultado de eso y sustituya la ruta completa por el nombre del comando. Por ejemplo:
/usr/bin/mysqldump
en lugar demysqldump
O agregue algo a una variable PATH local. P.ej:
PATH=$PATH:/usr/bin
Esto también solucionará problemas si tar
, chown
u otros comandos no están en la ruta predeterminada.