Crontab + .sh + php

1

Estou tentando chamar um script shell a cada 5 minutos, que executa o arquivo php na raiz.

# crontab -l
*/5 * * * * /home/regularuser/call.sh

permissões:

-rw-rw-rw-  1 root   root        162 Jun  6 23:40 call.php
-rwxr-xr-x  1 root   root         66 Jun  7 01:20 call.sh

conteúdo do call.sh:

#!/bin/bash
php -q /home/regularuser/call.php
echo "request processed"

Meu problema é que meu arquivo php não é executado via crontab. No entanto, se eu chamar call.sh - tudo funciona perfeitamente.

Sou novo no crontab e shell scripts, portanto, qualquer conselho / recurso é bem-vindo.

    
por Kristaps Karlsons 07.06.2010 / 00:48

3 respostas

1

Lembre-se que o Cron funcionará com um ambiente mínimo. Certas coisas importantes, como o PATH, podem ser diferentes do que você esperava.

Tente registrar a saída do comando no syslog, desta forma:

*/5 * * * * /home/regularuser/call.sh 2>&1 | logger -t call.sh

Isso imprime qualquer stdout e stderr nos registros do sistema , geralmente para / var / log / messages. A partir daqui, use 'grep call.sh / var / log / messages' para ver seu erro, que provavelmente será de 1-2 linhas.

Costumo preferir registrar erros como esse, em vez de enviar e-mails com spam. Mas isso só é útil para mensagens curtas.

Depois de encontrar a mensagem de erro, atualize sua pergunta com o erro. Ou você pode descobrir isso por si mesmo;)

    
por 08.06.2010 / 23:57
0

Tem certeza que o php está no $ PATH conhecido pelo crontab? E se você usar o caminho completo (/ what / ever / bin / php?)

Além disso, o cron deve enviar a saída do seu comando para sua caixa de correio. O que isso diz?

    
por 07.06.2010 / 01:03
0

maybee help add caminho para o comando crontab. se este comando encontrar o caminho binário do php assim:

$ whereis php
php: /usr/bin/php /usr/share/php /usr/share/man/man1/php.1.gz

use este comando com path - no meu caso / usr / bin / php:

*/5 * * * * /usr/bin/php -q /home/regularuser/call.php
    
por 06.09.2017 / 16:48