Eu tenho algum problema. Tenho a execução do script agendada, mas quando chega a hora nada acontece.
#!/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
Quando executo o script diretamente do ssh como /root/backup.sh, tudo funciona como deveria. Mas quando é executado pelo cron, nada acontece.
grep CRON /var/log/syslog
mostra que foi executado (19 de dezembro 01:21:01 vps-8463 /USR/SBIN/CRON[1299]: (root) CMD (sh /root/backup.sh >/dev/null 2>&1) ) mas não arquivo é criado. Tarefa Cron: 21 1 * * * sh /root/backup.sh >/dev/null 2>&1
Alguma idéia de por que isso está acontecendo?
Responder1
Meu primeiro palpite é que o comando mysqldump não está no caminho quando o script é executado pelo cron. Tentar:
which mysqldump
Pegue a saída disso e substitua o caminho inteiro pelo nome do comando. Ex:
/usr/bin/mysqldump
em vez demysqldump
Ou adicione algo a uma variável PATH local. Por exemplo:
PATH=$PATH:/usr/bin
Isso também resolverá problemas se tar
, chown
ou outros comandos não estiverem no caminho padrão.