Atualizado (e recortado ) com mais detalhes abaixo.
Eu configurei um script cron e estou tentando depurar porque ele não está em execução. [teste de contexto snipped, tudo ok; veja a revisão 2 para detalhes] O comando em si, caso isso aconteça, (as setas indicam quebra de linha para legibilidade) é:
/usr/bin/php -C /etc /path/to/process.php
↪ >>/path/to/stdout.log 2>>/path/to/stderr.log
[teste de permissões ignoradas, o que está tudo bem; veja abaixo e revisão 2 para detalhes]
Verificando crontab (novamente, agrupado para legibilidade), recebo:
[blackero@XXXXXXXXXXX to]$ sudo crontab -u cronuser -l
MAIL="blackero@localhost"
30 9 * * * cronuser /usr/bin/php -C /etc /path/to/process.php
↪ >>/path/to/stdout.log 2>>/path/to/stderr.log
20 18 7 * * cronuser /usr/bin/php -C /etc /path/to/process.php
↪ >>/path/to/stdout.log 2>>/path/to/stderr.log
22 18 7 * * cronuser echo "Test" > /path/to/test.txt
↪ 2> /path/to/error.txt
Atualização # 1 em 2012-02-08 12:32 Z
[Snip: Tendo tentado do derobert sugestão ( revisão 3 )] , eu sei que o cronuser pode executar o script corretamente e pode gravar nos dois arquivos .log . (Uma das primeiras coisas que o script process.php faz é baixar um arquivo por FTP; ele também está fazendo isso com sucesso.) Mas, mesmo depois de corrigir a linha MAIL="" (removendo-a e alterando-a para MAILTO="blackero@localhost" ), a tarefa cron ainda não funciona, nem me envia qualquer email.
Um amigo sugeriu que eu tentasse novamente
9 12 8 * * cronuser /bin/echo "Test" > /var/www/eDialog/test.txt
↪ 2> /var/www/eDialog/error.txt
tarefa, depois de passar o caminho completo para /bin/echo . Tendo apenas tentado isso, também não funcionou e também não gerou e-mail, por isso estou em uma perda.
Atualização # 2 em 2012-02-08 19:15 Z
Uma conversa de chat muito útil com oHessling , parece que o problema é com pam . Para cada vez que cron tentou executar meu trabalho, tenho /var/log/cron entradas:
crond[29522]: Authentication service cannot retrieve authentication info
crond[29522]: CRON (cronuser) ERROR: failed to open PAM security session: Success
crond[29522]: CRON (cronuser) ERROR: cannot set security context
Eu corrigi isso adicionando a seguinte linha a /etc/shadow :
cronuser:*:15217:0:99999:7:::
Como encontrei em um fórum , se o usuário não aparecer em /etc/shadow , então pam não continuará processando a solicitação de segurança. Adicionar * como a segunda coluna significa que esse usuário não pode efetuar login com uma senha (como nenhuma hash foi especificada). Corrigindo isso levou a um erro diferente em /var/log/cron , então, verificando novamente o meu crontab eu notei que eu tinha especificado o nome de usuário de cada vez.
Corrigir significa que meu crontab agora é:
[blackero@XXXXXXXXXXX ~]$ sudo crontab -u cronuser -l
MAILTO="blackero@localhost"
30 9 * * * /usr/bin/php -C /etc /path/to/process.php
↪ >>/path/to/stdout.log 2>>/path/to/stderr.log
52 18 8 * * /usr/bin/php -C /etc /path/to/process.php
↪ >>/path/to/stdout.log 2>>/path/to/stderr.log
9 12 8 * * /bin/echo "Test" > /path/to/test.txt
↪ 2> /path/to/error.txt
mas agora /var/log/cron me mostra:
Feb 8 18:52:01 XXXXXXXXXXX crond[16279]: (cronuser) CMD (/usr/bin/php -C /etc
↪ /path/to/process.php >>/path/to/stdout.log 2>>/path/to/stderr.log)
e nada entra em stdout.log ou stderr.log . Nenhum email foi enviado para mim e nenhum dos outros arquivos em /var/log/ tem qualquer entrada no período de tempo correto, e estou ficando sem ideias quanto a onde procurar para ver o que está errado