O trabalho do Cron não está em execução / não é bem sucedido?

1

Eu tenho um par de cron trabalhos configurados para manter uma cópia local de um banco de dados remoto.

O primeiro faz o download da versão mais recente do banco de dados da máquina remota, que é executada todos os dias e está funcionando bem.

O segundo importa os dados baixados, mas não está funcionando.

O trabalho é apenas um script de shell simples:

#!/bin/bash
mysql -u root -mypass -h localhost my_db < my_db.sql

A tarefa cron é configurada assim:

0 8 * * * bash /home/lampadmin/cron/my_db.sh

Se eu executar o script de shell manualmente, tudo funciona bem.

O que posso fazer para descobrir por que não está funcionando no cron?

    
por Dan 15.04.2013 / 13:43

2 respostas

1

remova o bash, apenas tenha o seguinte e ele deve funcionar:

0 8 * * * /home/lampadmin/cron/my_db.sh

verifique também se my_db.sh é executável.

chmod a+x /home/lampadmin/cron/my_db.sh
    
por 15.04.2013 / 14:04
1

Tenho um mau pressentimento em tornar o arquivo executável para todos. Eu tentaria este perto da sua primeira ideia.

0 8 * * * /bin/bash /home/lampadmin/cron/my_db.sh

É sempre uma boa ideia executar comandos com o caminho completo. Você nunca sabe o que você vai conseguir de outra forma. Portanto, você também deve fornecer o caminho completo para my_db.sql em seu arquivo my_db.sh .

Mas além disso, tenho um sentimento ainda pior sobre a configuração da senha via linha de comando. Cada usuário pode ver a senha de root com o auxílio de ps enquanto seu script está sendo executado.

Sugiro definir a senha por meio do arquivo .my.cnf como este

[mysql]
user=root
password=rootpassword

no diretório inicial do usuário apropriado. Se essa abordagem for muito genérica para seus requisitos, você pode colocar isso em um arquivo extra /home/lampadmin/cron/my.cnf e usar essas configurações com

/usr/bin/mysql --defaults-extra-file=/home/lampadin/cron/my.cnf -h localhost mydb < /pathto/my_db.sql

Em qualquer caso, apenas o usuário deve ter acesso ao seu my.cnf para proteger sua senha. Você deveria usar

chmod go-rwx my.cnf

para conseguir isso.

    
por 16.04.2013 / 17:00