O trabalho do Cron falha por qualquer hora que não seja o padrão * * * * *

1

No Ubuntu 11.10 (Oneiric Ocelot), minha tarefa do cron funciona bem se eu usar o padrão

* * * * *

Mas se eu quiser que ele seja executado às 17 horas ou em qualquer outro momento, ele nunca será executado. Minhas configurações são:

00 17 * * * wget http://www.abc.com/a.php

Eu também tentei:

00 17 * * * root wget http://www.abc.com/a.php

Eu também tentei especificar o caminho. Há um retorno de carro e estou logado como root

Aqui está o meu crontab completo:

TZ=Australia/Sydney
22 7 * * * /usr/bin/wget http://www.abc.com/a.php
22 7 * * * /bin/date >> /tmp/date.txt

---- a saída é como segue:

root@Scrunch:~# sudo crontab -l -u root
55 12 * * * date >>/tmp/crontest.txt





root@Scrunch:~# 

Por que o terminal exibe tantas linhas em branco após a saída das entradas de crontab? você suspeita que linhas de transporte desnecessárias são dadas ... E eu não dei nenhuma entrada a nenhum outro espaço do cron como .d, / eyc diário,

    
por Raghu 29.05.2012 / 15:13

2 respostas

1

Use apenas um zero para o minuto. Também é geralmente uma boa ideia ao criar trabalhos cron para usar o caminho completo do comando que você está usando. Isso ocorre porque as tarefas do cron são executadas em um ambiente de shell especial muito limitado, e seu caminho pode ser diferente do que você usa quando efetuado login. Se você não souber, poderá encontrá-lo facilmente com o comando which:

which wget

Outra coisa, o último comando root wget http://www.abc.com/a.php , está incorreto. root não é um comando válido. Eu estou supondo que você pretendia usar o sudo. Isso seria desnecessário se você estivesse executando o cron job como root, ou seja,

sudo crontab -e
    
por reverendj1 29.05.2012 / 16:08
1

se a sua definição de trabalho cron é inválida, isso será registrado em /var/log/syslog . O que eu costumo fazer é definir a tarefa cron para executar 2 minutos a partir de agora e, em seguida, tail -f /var/log/syslog e garantir que as coisas sejam executadas conforme o esperado.

Se não houver erros registrados em /var/log/syslog , mas o comando não foi executado (ou até mesmo foi bem-sucedido), o cron enviará por email a saída do console a partir da execução do comando. Se você não estiver recebendo esses e-mails (pode procurar em /var/spool/mail/root ), então alguma outra coisa está errada. Eu noto que você não está usando a opção -Q para wget, então você deve receber e-mails toda vez que for executado.

Por fim, o sexto campo (onde você coloca root em seu terceiro exemplo) é válido somente no arquivo crontab do sistema ( /etc/crontab ou qualquer um dos diretórios /etc/cron.{d,hourly,daily,weekly,monthly} fragment. Não é válido no crontab de um usuário (que parece ser o que você está usando).

Eu fiz o seguinte para validar que as coisas funcionam corretamente em princípio, você pode querer seguir este procedimento para pelo menos garantir que estamos fazendo as coisas da mesma maneira:

  1. Torne-se root (geralmente faço sudo -i ). Isso é porque você está dizendo que quer fazer isso como root.
  2. %código%. Você será colocado em um editor para editar o arquivo crontab.
  3. Adicione a seguinte linha (ajuste a hora local para que seja executada nos próximos 3 minutos. Dê a si mesmo algum tempo para terminar de digitar e salvar o arquivo).

    crontab -e

  4. Exclua ou comente todo o restante do arquivo crontab.
  5. Salve o arquivo e saia do editor
  6. Confirme se o cron foi instalado corretamente executando 05 10 * * * date >>/tmp/crontest.txt
  7. Espere até o horário configurado
  8. confirmar que uma linha como essa aparece em / var / log / syslog:

crontab -l

Finalmente, confirme que May 30 10:05:01 snowflake CRON[4170]: (root) CMD (date >>/tmp/crontest.txt) foi criado e contém a hora / data agendadas.

Cron está no Unix / Linux há anos, é testado e confiável, então o que você está experimentando não é um bug, e você parece estar fazendo as coisas direito, então deve ser algo outra coisa que está afetando o seu funcionamento corretamente. Espero que possamos determinar o que é com alguns procedimentos de diagnóstico:)

    
por roadmr 29.05.2012 / 17:11