[FUG-BR] /etc/crontab NÃO executando

Luiz Otavio O Souza lists.br em gmail.com
Quinta Maio 26 11:55:38 BRT 2011


On May 25, 2011, at 9:25 AM, irado furioso com tudo wrote:

> Em Mon, 23 May 2011 22:41:56 -0300
> Giancarlo Rubio <gianrubio em gmail.com>, conhecido consumidor/usuário de
> drogas (Windows e BigMac com Coke) escreveu:
> 
>> /var/log/cron ou cron -x ??
>> 
> 
> olá, rubio e demais colegas.
> 
> voltando ao assunto (e ao trampo) examinei o log e aí a coisa ficou
> clara como lama de uma vez:
> 
> "alguns" aplicativos funcionam normalmente, mas NÃO todos. Por exemplo,
> tomemos trecho do log:
> 
> May 25 08:55:00 maquina01 /usr/sbin/cron[30880]: (operator) CMD
> (/usr/libexec/save-entropy) May 25 08:55:00 maquina01 /usr/sbin/cron
> [30881]: (root) CMD (/usr/libexec/atrun)
> 
> :.comentario:
> 
> as duas linhas acima mostram o funcionamento normal de dois comandos
> existentes no /etc/crontab
> 
> :/end comentario
> 
> May 25 08:55:00 maquina01 /usr/sbin/cron[30882]: (root) CMD
> (/usr/local/bin/php /usr/local/share/cacti/poller.php > /dev/null
> 2>&1) 
> 
> :comentário: a linha acima mostra um script que NÃO funciona
> quando chamado pelo /etc/crontab; funciona SEM alteração se no
> crontab de usuário (crontab -e)
> /end comentario
> 
> a partir daí, tudo se repete. Além disso, noto o seguinte: o "periodic"
> nêsse /etc/crontab não funciona, portanto TUDO o que está nos
> cron.daily, cron.hourly, cron.monthly é ignorado. Contudo, periodic
> ativado diretamente no console e apontado para o período próprio:
> 
> /usr/sbin/periodic { daily | weekly | monthly }
> 
> também funciona normalmente.
> 
> (re)lembrando: o /etc/crontab é o da instalação, intocado, então
> imagino não haja problemas com êle (exceto não funcionar).
> 
> bem.. vou continuar olhando essas coisas por aqui, pra mim, nada claro,
> e vamos ver; curioso, né?
> 
> grato,
> 

Irado,

Pelo que eu me lembre, a única diferença do cron de um usuário comum (/var/cron/tabs/XXXX) para o cron do root (/etc/crontab) é o PATH que é diferenciado.

Ele é setado logo nas primeiras linhas do arquivo (/etc/crontab):

# /etc/crontab - root's crontab for FreeBSD
#
# $FreeBSD: head/etc/crontab 194170 2009-06-14 06:37:19Z brian $
#
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin


Esse PATH é diferente do PATH que você tem quando executa um programa no prompt, por exemplo (no meu caso):

devel# echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin

Experimente executar o script problemático com o mesmo PATH utilizado pelo cron e o seu problema deve aparecer (algo como):

# env PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin /usr/local/bin/php /usr/local/share/cacti/poller.php

Provavelmente esse script utiliza algum aplicativo que fica fora do PATH especificado no cron.

Se ele aparece lá no log do cron como você mostrou:

> May 25 08:55:00 maquina01 /usr/sbin/cron[30882]: (root) CMD
> (/usr/local/bin/php /usr/local/share/cacti/poller.php > /dev/null
> 2>&1) 

É pq ele foi executado (agora se ele foi executado com sucesso ou não é que é a questão).

Também desconheço qualquer problema com o periodic (que é um simples shell script em /usr/sbin/periodic, relativamente facil de voce debugar) que não seja relacionado aos problemas com o PATH do cron.

Bem é isso, qualquer novidade é só avisar.

[]'s
Luiz



Mais detalhes sobre a lista de discussão freebsd