O script não fará o que deveria quando executado com o cron

1

Eu tenho algum problema. Eu 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 (Dez 19 01:21:01 vps-8463 / USR / SBIN / CRON [1299]: (raiz) CMD (sh /root/backup.sh > / dev / null 2 > & 1) ) mas nenhum arquivo é criado. Tarefa Cron: 21 1 * * * sh /root/backup.sh >/dev/null 2>&1
Alguma idéia do porquê isso está acontecendo?

    
por Igor Yavych 19.12.2013 / 01:10

1 resposta

3

Meu primeiro palpite é que o comando mysqldump não está no caminho quando o script é executado pelo cron. Experimente:

which mysqldump

Pegue a saída disso e substitua o caminho inteiro pelo nome do comando. Por exemplo: /usr/bin/mysqldump em vez de mysqldump

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.

    
por 19.12.2013 / 01:18

Tags