Por que meu cronjob não está rodando?

2

Eu tenho um cronjob em /etc/cron.d/mycron que se parece com isso:

0 3 * * * apache php /path/to/my/script.php

No mesmo arquivo existem outros cronjobs que começam a ser executados como root e outros usuários (que funcionam), mas por alguma razão este trabalho rodando como apache não está rodando e não está reportando nada em /var/log/messages ou enviando nada para o endereço MAILTO no arquivo cron. Quando eu su apache e executo o comando do cronjob, ele funciona bem, mas o cron não gosta dele.

Este é um problema de longa duração para mim e, até agora, reuni as seguintes possibilidades:

  • O usuário do apache não tem um diretório inicial (os outros usuários do cron fazem) e o crond não gosta disso.
  • Há algum PAM ou /etc/security/access.conf definindo o bloqueio do apache usando o crond, embora /etc/security/access.conf esteja completamente comentado.
  • SELinux - geralmente é o culpado quando um problema parece realmente estranho.

Alguma idéia ou experiência com este problema e qual a solução?

Obrigado

    
por Tom 15.08.2012 / 18:15

3 respostas

1
  • Tente usar o caminho completo para o php na configuração do cron: /usr/bin/php
  • Verifique o diretório inicial do apache: grep apache /etc/passwd Até onde eu sei, o usuário deve sempre ter o diretório inicial. Pode residir não em / home.
  • Verifique as mensagens do syslog sobre eventos de segurança. Se este é o PAM, você verá algo
  • Tente desativar o SELinux
por 16.08.2012 / 16:56
4

Um diretório inicial deve ser definido para o usuário. Se o usuário não tiver um, você poderá especificá-lo diretamente no arquivo cron.d.

Você provavelmente precisará fornecer PATH = / usr / bin / também, ou especificar o caminho completo para o comando.

HOME=/tmp
0 3 * * *         apache    /usr/bin/php /path/to/my/script.php
    
por 26.08.2015 / 22:05
0
Por padrão,

cron é executado com um PATH muito limitado; você precisa colocar no caminho completo para o php binário?

    
por 15.08.2012 / 18:29