Quero verificar se um determinado crontab funciona corretamente. Eu adicionei um trabalho como este:
*/2 * * * * /path_to_my_php_script/info.php >/dev/null 2>&1
Eu sei que redireciono para o dispositivo nulo, mas não tenho certeza se o comando acima é bom.
* Editar 1: No meu / var / log / syslog a cada dois minutos, tenho o seguinte erro:
(CRON) error (grandchild #2788 failed with exit status 2)
* Edição 2: sem erros nos logs com este novo trabalho:
*/2 * * * * /usr/bin/php /path_to_my_php_script/info.php >/dev/null 2>&1
Respostas:
A sintaxe da entrada crontab parece correta. De fato, se você editar seu crontab usando "
crontab -e
" (como deveria), receberá um erro se especificar uma entrada sintontática inválida do crontab de qualquer maneira.Em primeiro lugar, é
/path_to_my_php_script/info.php
executado corretamente a partir da linha de comando?Em caso afirmativo, ele também funciona corretamente assim:
Se isso funciona, funciona assim?
O passo (3) é semelhante ao modo como o cron executará seu programa (conforme documentado em "man 5 cron".
O problema mais provável que você está tendo é que o cron PATH está usando para executar seu programa é muito restritivo. Portanto, você pode adicionar algo como o seguinte na parte superior da sua entrada crontab (você precisará adicionar os diretórios que seu script precisar):
Observe também que o cron usará por padrão
/bin/sh
, e não o bash. Se você precisar do bash, adicione-o também ao início do seu arquivo crontab:Observe que ambas as alterações afetarão todas as entradas do crontab. Se você quiser modificar esses valores para o seu
info.php
programa, faça algo assim:Também vale mencionar que em um sistema configurado para "correio" (em outras palavras, um sistema com um MTA configurado [sendmail / postfix / etc]), toda a saída dos programas crontab é enviada automaticamente por e-mail. Um sistema desktop padrão do Ubuntu não terá o correio local configurado, mas se você estiver trabalhando em um servidor, basta digitar "mail" em um terminal para ver todos os cron mails. Isso também se aplica ao
at
comando " ".fonte
Embora muito raro, às vezes o cron para de funcionar corretamente, mesmo que o serviço esteja em execução. Aqui está como verificar se o crond está em execução e parar / iniciar o serviço.
No Linux:
No Ubuntu e outros sistemas baseados no Debian:
fonte
cron
, nãocrond
Não redirecione a saída de erro para / dev / null e grep / var / log / syslog para a saída cron.
Você pode mostrar imediatamente erros ao salvar um arquivo após a edição
/etc/crontab
ou os arquivos internos/etc/cron.d/
com:Se a edição estiver correta, você verá apenas o
RELOAD
aviso, ocorrerão erros comofonte
Você pode ver seu cron ativo com o comando terminal:
Aqui estão os parâmetros em ordem:
min (0 - 59)
hora (0 - 23)
dia do mês (1-31)
mês (1-12)
dia da semana (0 - 6) (domingo = 0)
comando
Então, você está chamando seu script a cada primeiro minuto de cada hora. Você deve testar sua saída com mais frequência para fins de teste:
Isso será chamado a cada minuto!
fonte
Para a parte do tempo em cada linha, você pode usar esse cron testador para testar / verificar sua definição de tempo do cron.
fonte
Eu acredito que você também pode usar
run-parts
para executar trabalhos cron fora de banda. Na verdade, é o que o cron usa para executar os trabalhos periódicos do cron; portanto, fornecendo os argumentos apropriados, você pode executá-los a qualquer momento.Se você deseja apenas executar um arquivo em vez de todos os trabalhos cron definidos em, por exemplo,
/etc/cron.daily
você precisará fornecer o argumento regex junto com um regex válido.run-parts --list --regex '^p.*d$' /etc
Lembre-se de que os trabalhos cron geralmente são nomeados sem uma extensão e marcados como executáveis; portanto, verifique se seus scripts são semelhantes, embora o uso de uma expressão regular possa permitir que você ative um script com uma extensão.
fonte
ah !!
obtive a resposta, verifiquei e não encontrei
crond
dentro do diretório de instalação padrão, ou seja,/etc/init.d/
agora tentará responder.
nota - ENTENDI check a
cron.allow
,cron.deny
também. Tudo está bem até agora.fonte