Eu tenho um problema seriamente estranho com um dos servidores web Ubuntu 10.10 que eu administro.
Eu escrevi um script usando ruby e rake para executar alguns comandos tar e fazer um mysqldump dos bancos de dados. Eu instalei uma entrada no crontab de usuários root assim:
0 0,12 * * * /bin/bash -l -c 'cd /my/script/path && rake backup:everything'
Isso está funcionando perfeitamente em um dos servidores. No entanto, por outro lado, isso não parece realmente executar o que está no meu script.
Eu sei que está sendo chamado definitivamente porque quando eu corro
grep CRON /var/log/syslog
retorna:
Mar 22 12:00:01 ServerName CRON[10273]: (root) CMD (/bin/bash -l -c 'cd /my/script/path && rake backup:everything')
No entanto, definitivamente não está fazendo o que está nesse script.
Quando eu executo diretamente o script assim:
cd /my/script/path && sudo rake backup:everything
Funciona perfeitamente.
Também fiz isso no crontab dos dois servidores:
0 0,12 * * * /bin/bash -l -c 'cd /my/script/path && rake backup:everything >> output.txt'
(como no script eu estou fazendo um "puts 'backup x pasta'" de vez em quando)
No servidor em que a tarefa cron está funcionando, ele cria o arquivo output.txt e coloca a saída esperada lá, como "Iniciando backup", etc.
No entanto, no servidor em que não está funcionando, ele apenas cria o arquivo, mas o deixa vazio. Mas quando eu copiar o comando do syslog novamente e executá-lo manualmente:
sudo /bin/bash -l -c 'cd /my/script/path && rake backup:everything >> output.txt'
Funciona bem e a saída é conforme o esperado.
Eu posso estar agarrado a palha agora, mas poderia ser qualquer coisa com isso:
CRON[10271]: (root) MAIL (mailed 55 bytes of output but got status 0x004b#012)
Isto aparece no syslog após todas as chamadas cron. Eu realmente só tenho esse cron job e outro pequeno para atualizar o relógio do sistema, mas pela aparência dele nenhum deles está funcionando corretamente.
Uma configuração de correio incorreta está matando meus trabalhos do cron? Isso é possível?