O crontab personalizado não funciona (FreeBSD)

1

Eu criei o arquivo crontab.custom com:

*/1 * * * * /home/username/data/www/run.sh  

E run.sh contém:

php script.php  

Depois disso eu executo este comando crontab crontab.custom .

Agora, crontab -l retorna minha tarefa.

Eu reiniciei o cron com /etc/rc.d/cron restart , mas script.php não é chamado. O que devo fazer para que funcione?

    
por Metalex 09.08.2013 / 12:36

3 respostas

2

Isso provavelmente é porque seu $PATH não está definido. Quando você tenta executar php em seu shell, na realidade, ele procura o destino absoluto de php de seu $PATH , que é uma lista de diretórios a partir dos quais localizar executáveis. Isso é definido em seu ambiente, mas o cron não compartilha esse ambiente (na verdade, ele provavelmente tem um% ou não coet =% vazio). Existem algumas soluções (do melhor para o pior):

  • Defina $PATH no seu crontab adicionando algo assim ao topo:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  • Use o caminho completo para o executável $PATH no script (isso é ruim, o usuário deve ser capaz de substituir o PATH no ambiente para usar binários diferentes, se quiserem);

  • Defina php explicitamente no seu script (ruim pelo mesmo motivo).

por 09.08.2013 / 12:43
2

Anexe as seguintes linhas no topo do seu script de shell como este

#!/bin/bash

PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
export PATH

depois coloque a tarefa cron usando

crontab -e
    
por 10.08.2013 / 07:01
1

Problemas com arquivos crontab tendem a estar relacionados com um ambiente diferente quando executados no cron. Como você não forneceu o arquivo run.sh , estas são algumas dicas de solução de problemas:

  1. Como você mesmo, digite /home/username/data/www/run.sh na linha de comando e verifique se funciona
  2. Verifique se todos os caminhos estão explicitamente definidos como caminhos completos no seu script
  3. Confirme se você adicionou os dados no local correto - crontab -e permite editar seu arquivo crontab
  4. Certifique-se de ter permissão para usar o cron. Seu nome de usuário deve estar no arquivo /var/cron/allow e não estar no arquivo /var/cron/deny
  5. Verifique a saída de / var / log / cron
por 23.10.2013 / 17:11

Tags