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