[FUG-BR] Problema com o cron [RESOLVIDO]

Diego Paludo diego.paludo em gmail.com
Quarta Maio 18 10:49:52 BRT 2011


Funcinou com vossas dicas, segue:

#!/usr/local/bin/bash

SHELL=/usr/local/bin/bash
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin

# Binarios
DUMP="/usr/local/bin/mysqldump"
SQL="/usr/local/bin/mysql"
ZIP="/usr/bin/gzip"

# Destino do backup
BACKUP_DIR="/home/dbbkp/mysql_backup"

# Acesso ao MySQL
USER="dbbkp"
PASS="******"

# Lista todos os bancos de dados
DB_LIST=`$SQL -u $USER -p$PASS -Bse 'show databases'`

# Lista de bancos de dados ignorados
IGNORE="information_schema test"

TIME=`date +%F`

for db in $DB_LIST; do
        skipdb=-1

        for i in $IGNORE; do
                [ "$db" == "$i" ] && skipdb=1 || :
        done

        if [ "$skipdb" == "-1" ]; then
                $DUMP -u $USER -p$PASS $db | $ZIP -9 >
$BACKUP_DIR/$db.$TIME.sql.gz
        fi
done

# Remove arquivos com mais de 8 dias de criacao
find $BACKUP_DIR/* -mtime 8 -exec rm {} \;

exit 0
# EOF



Valew pela ajuda!


2011/5/18 Diego Paludo <diego.paludo em gmail.com>

> Na verdade esse script eu fiz no Debian, e lá funciona direitinho.
>
> a linha:
> PATH=$PATH
>
> No Debian funciona pois esta definida nas variareis de ambiente.
>
> Confesso que o uso do 'which' facilita bastante, pelo menos no Debian :)
>
> Valeu a dica de todos, vou testar e já retorno.
>
>
>
> Agradecido!
>
>
>
> 2011/5/18 Luiz Otavio O Souza <lists.br em gmail.com>
>
>> On May 18, 2011, at 10:14 AM, Diego Paludo wrote:
>>
>> > Bom dia senhores e senhoras :)
>> >
>> > Estou agendando no cron de um determinado usuario (crontab -e) um
>> > scriptzinho bash para fazer backup (dump) do mysql, porém ao executar
>> tal
>> > script ele acusa erro na linha 28 do script:
>> >
>> > "line 28: -u: command not found"
>> >
>> > Mas se eu executar "na mão" o mesmo script não dá erro e faz tudo o que
>> foi
>> > determinado no script.
>> >
>>
>> Como já falaram, problemas com o seu script...
>>
>> Dentro do /etc/crontab você tem o PATH definido como:
>>
>> # /etc/crontab - root's crontab for FreeBSD
>> #
>> # $FreeBSD: head/etc/crontab 194170 2009-06-14 06:37:19Z brian $
>> #
>> SHELL=/bin/sh
>> PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
>>
>>
>> Ou seja, nada dentro do /usr/local
>>
>>
>> Veja só:
>>
>>
>> > Linha no "crontab -e":
>> > 00 23 * * * /home/dbbkp/mysql_bkp.sh
>> >
>> > Segue o script:
>> >
>> > #!/usr/local/bin/bash
>> > PATH=$PATH
>>
>> Se você quer escrever um script portável (escreva no FreeBSD e ele vai
>> funcionar no Linux), utilize o /bin/sh e evite o bash.
>>
>> PATH = $PATH também não ajuda muito (isso não faz nada, certo ?) :|
>>
>> >
>> > # Binarios
>> > DUMP=`which mysqldump`
>> > SQL=`which mysql`
>> > ZIP=`which gzip`
>>
>> O problema esta aqui, ao invés de usar o 'which' especifique o caminho
>> completo dos utilitários, isso dá algum trabalho na hora de criar o script,
>> mas poupa você de muita dor de cabeça mais tarde.
>>
>> >
>> > # Destino do backup
>> > BACKUP_DIR="/home/dbbkp/mysql_backup"
>> >
>> > # Acesso ao MySQL
>> > USER="dbbkp"
>> > PASS="*******"
>> >
>> > # Lista todos os bancos de dados
>> > DB_LIST=`$SQL -u $USER -p$PASS -Bse 'show databases'` >>>>>> essa é
>> linha
>> > 28, onde da erro executando via cron
>> >
>>
>> De acordo com o erro:
>>
>> > "line 28: -u: command not found"
>>
>> Podemos imaginar que a variável $SQL não foi devidamente substituída pelo
>> valor que você imaginava e acabou ficando em branco.
>>
>>
>>
>> > # Lista de bancos de dados ignorados
>> > IGNORE="information_schema test"
>> >
>> > TIME=`date +%F`
>> >
>> > for db in $DB_LIST; do
>> >        skipdb=-1
>> >
>> >        for i in $IGNORE; do
>> >                [ "$db" == "$i" ] && skipdb=1 || :
>> >        done
>> >
>> >        if [ "$skipdb" == "-1" ]; then
>> >                $DUMP -u $USER -p$PASS $db | $ZIP -9 >
>> > $BACKUP_DIR/$db.$TIME.sql.gz
>> >        fi
>> > done
>> >
>> > # Remove arquivos com mais de 8 dias de criacao
>> > find $BACKUP_DIR/* -mtime 8 -exec rm {} \;
>> >
>> > exit 0
>> > # EOF
>> >
>> >
>> > Agradecido!!
>> > Diego
>>
>> Não por isso...
>>
>> Boa sorte,
>> Luiz
>>
>> -------------------------
>> Histórico: http://www.fug.com.br/historico/html/freebsd/
>> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>>
>
>


Mais detalhes sobre a lista de discussão freebsd