Executando o trabalho Cron do PHP com Argumentos

1

Estou tentando executar um script PHP, uma vez por dia, no servidor Ubuntu 13.10 com php5.

Eu tenho tarefas agendadas configuradas, via painel de controle ajenti, verificadas com crontab -l , para este comando.

php /path/script.php site_id=2 table=clicks

Eu tenho ajustado o tempo enquanto tento executá-lo, mas basicamente eu quero executá-lo às 2 da manhã.

0 2 * * * 

Eu tentei executar o script diretamente, executando-o via /usr/bin/php , /usr/bin/php5/ e php , e nada nunca deixa um rastreio no syslog ou no log do apache ou arquivos de erro (nível de rastreio 8)

Eu estava tentando executá-lo às 2 da manhã, então configurei dessa maneira, mas executar um date no terminal mostra a hora atual como

  

Qui, 6 de fevereiro, 07:44:29 UTC de 2014

Eu tentei executar as tarefas cron em 7something am também e, novamente, nada é executado.

Alguma ideia? Além do syslog, existe algum registro do Ubuntu para tarefas do cron, para ver se elas são executadas ou não e por quê?

Além disso, essa é a maneira correta de enviar argumentos? O script precisa aceitá-las de forma diferente de um script baseado na web?

    
por alpha1 06.02.2014 / 08:50

1 resposta

2

Primeiro, valide seu comando para funcionar corretamente na linha de comando:

/usr/bin/env php /path/to/script.php arguments

Em segundo lugar, valide seu cron em execução:

ps auxw | grep cron

Deve haver uma linha como (destaques com ^ meu)

root      1537  0.0  0.0  19112   336 ?        Ss    2012   1:03 cron
^^^^                                                             ^^^^

Se cron estiver sendo executado corretamente, verifique outras mensagens cron do syslog:

sudo zgrep CRON /var/log/syslog*

Por padrão, várias tarefas são executadas como root , configuradas nas pastas /etc/cron.daily , /etc/cron.weekly etc. Se não houver saída, seu cron não está funcionando corretamente. Tente reiniciá-lo com

sudo /etc/init.d/cron restart

E verifique o conteúdo de /var/log/syslog para mensagens de erro e prossiga para o passo 1 novamente

Se cron estiver sendo executado corretamente, vá para verificar a caixa de correio do usuário que tem esse comando em crontab . Substitua USERNAME.

sudo -u USERNAME mail

ou     sudo -u USERNAME menos / var / mail / USERNAME

Se a execução do comando cron falhar, deverá enviar um email para lá.

Você deve usar /usr/bin/env php /path/to/script.php como seu comando, em vez de apenas php . /usr/bin/env seleciona automaticamente php binário.

Para argumentos, não, você precisa ler os argumentos separadamente. Isso é fora do tópico para este site, mas dê uma olhada em esta página de manual . Você pode ler esses argumentos de $argv . Não funciona da mesma forma que com scripts chamados através do servidor web.

    
por Olli 06.02.2014 / 10:10