Lord_Dracon
(usa Debian)
Enviado em 28/06/2009 - 07:52h
Bom dia!
É meu primeiro tópico aqui no vivaolinux.com.br, não sei se é a melhor seção para eu postar a minha dúvida, mas não encontrei outra compatível. Se a moderação achar necessário, favor movê-lo para a respectiva seção.
Trabalho com um Servidor Ubuntu 7.10 (Server). Desenvolvi um script em PHP para efetuar um backup do banco de dados MySQL e dos arquivos em /var/www.
Dentro do script, em dado momento, eu chamo a função shell_exec() do PHP para o seguinte comando:
/usr/bin/mysqldump -u root -p****** -f DATABASE TABELA | gzip -9 -c > DATABASE.TABELA.sql.gz
Esse shell está dentro de um laço while que serve para dumpar todas as tabelas, uma por arquivo, já compactando elas, e após isso ele compacta o conteúdo do /var/www.
Agora vem a parte intrigante:
O script só funciona quando eu o executo manualmente no terminal. Quando eu coloco o script no Cron, ele começa a ser executado, e durante esses dumps, ele simplesmente é interrompido do nada, dumpando apenas algumas tabelas e finalizando em seguida.
A versão do Kernel é:
initrd.img-2.6.22-14-server [Ubuntu 7.10 \n \l]
O script está configurado no root do Cron da seguinte maneira:
00 01 * * * /usr/bin/php /backups/backup.php
As permissões do arquivo em questão é:
-rwxrwxrwx 1 webadmin webadmin 13K 2009-06-27 03:16 backup.php
A versão do cliente PHP é:
PHP 5.2.3-1ubuntu6.3 (cli) (built: Jan 10 2008 09:38:41)
A versão do mysqldump é:
mysqldump Ver 10.11 Distrib 5.0.45, for pc-linux-gnu (x86_64)
Eu já pesquisei em vários lugares e não faço a mínima idéia do porque que quando eu rodo o script manualmente ele funciona e através do Cron ele não funciona.
Também já tentei outras funções do PHP para chamar o shell (como a system(); exec(); passthru();), e em todas acontece o mesmo. Funciona manualmente mas quando o Cron executa interrompe no meio.
Alguém tem alguma sugestão do por que disso acontecer?
Desde já, obrigado pela atenção!