[FUG-BR] Problema com o cron
Diego Paludo
diego.paludo em gmail.com
Quarta Maio 18 10:40:53 BRT 2011
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