Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Matias Rezende

[Resolvido] Problemas ao criar crontab

Recommended Posts

Fala galera...

 

Estou com um problema que está me incomodando a mais de 1 semana. Preciso agendar a execução de um script a cada 5 minutos. Já li vários tutoriais, artigos, pedi ajuda para amigos... e NADA de funcionar. Não sei se o problema é no script a ser executado (PHP) ou na forma de agendar, ou ainda alguma configuração do servidor.

 

Vamos às tentativas:

 

arquivo cron

0-59/5 * * * * /path/to/file/file.sh
// tentei também assim
*/5 * * * * /path/to/file/file.sh

 

No arquivo tem um código PHP a ser executado (este foi de teste pra ver se estava OK, mas não funcionou também):

file.sh

#!/usr/share/php
<?php
$file = fopen ( '/path/to/file/teste.txt', 'a' );
fwrite ( $file, time () );
fclose ( $file );

 

Para criar o agendamento, fiz o seguinte:

$ crontab cron
$ crontab -l // 0-59/5 * * * * /path/to/file/file.sh

 

O arquivo .sh tem permissão de execução. A pasta também tem. Os arquivos e a pasta tem como proprietário o mesmo usuário que está agendando a tarefa.

 

Alguém pode me dar alguma dica (qualquer ajuda será extremamente bem vinda). Tenho acesso root ao servidor via SSH, caso seja necessário.

 

Carlos Eduardo

 

EDIT - fiz uma alteração no código, que eu tinha visto antes. Achei que tinha arrumado, mas não tinha. Ficou assim o código do arquivo .sh

 

#!/usr/bin/php
<?php
$file = fopen ( '/path/to/file/teste.txt', 'a' );
fwrite ( $file, time () );
fclose ( $file );

 

Continua não funcionando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

arquivo cron

0-59/5 * * * * /path/to/file/file.sh
// tentei também assim
*/5 * * * * /path/to/file/file.sh

 

Pode usar .php mesmo. Não que faça diferença na execução, mas só pra identificar que é um PHP, não um shell.

Tente também colocar o path completo do interpretador php:

*/5 * * * * /usr/bin/php /path/to/file/file.sh

Confira se o path é esse mesmo.

E use também o path completo pro script: /home/usuario/.../file.sh (ou .php)

 

Executando com o interpretador, nem precisa da primeira linha, com o path do interpretador dentro do arquivo.

 

 

No arquivo tem um código PHP a ser executado (este foi de teste pra ver se estava OK, mas não funcionou também):

file.sh

#!/usr/share/php
<?php
$file = fopen ( '/path/to/file/teste.txt', 'a' );
fwrite ( $file, time () );
fclose ( $file );

 

Aí também vale o path completo: /home/usuario/.../teste.txt

 

Para criar o agendamento, fiz o seguinte:

$ crontab cron
$ crontab -l // 0-59/5 * * * * /path/to/file/file.sh

Nunca usei o cron assim. Costumo usar o comando "crontab -e", que já abre o vim pra editar o arquivo com o s agendamentos.

 

 

 

Abraços,

 

Beraldo

 

 

 

 

 

EDIT:

 

ah, pode usar um log:

*/5 * * * * /usr/bin/php /path/to/file/file.sh &> /home/usuario/arquivo.log

 

mensagens de erro e saídas do script irão pra esse arquivo. aí você pode dar uns prints e ver como anda a execução

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então... Lendo o que você escreveu fiz algumas modificações e funcionou, mas descobri que o problema era o código que eu estava querendo executar (que estava com problemas - entrava em loop infinito). Aí o código não fazia o que tinha que fazer mas também não mostrava nenhum erro.

 

Ficou assim:

 

*/5 * * * * /usr/bin/php /var/www/path/to/file.php &> /var/www/path/to/logs.log

 

O arquivo file.php é um arquivo PHP normal, sem nada de mais. Tudo que depende de caminho dentro do código utiliza caminhos absolutos desde a raiz.

 

De qualquer forma, valeu pela ajuda e agora está 100% funcionando.

 

:clap:

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.