Por que o crontab funciona com curingas (*), mas não com números?

1

Eu quero executar um script todos os dias às 10:25 (hora exata não é importante) no meu Raspberry Pi (executando Raspbian Jessie).

Com essa linha: 25 10 * * * /home/pi/test.sh não deu resultados, nem saída nem log de atividades.

Eu tentei com * * * * * /home/pi/test.sh e a mágica acontece! Funcionou bem, produzindo CMD (/home/pi/test.sh) nos registros do cron e criando o arquivo de saída desejado.

O script que usei para fins de teste:

#!/bin/bash
echo 'date' > /home/pi/test.txt

Alguém tem alguma ideia de por que o cron não executa o script?

    
por Jerry Magnin 14.02.2017 / 13:33

2 respostas

-1

A partir do crontab manpage

Commands are executed by cron(8) when the minute, hour, and month of year fields match the current time, and at least one of the two day fields (day of month, or day of week) match the current time

Você é obrigado a ter um dos campos do dia. Se você quer que isso funcione às 10:25 todos os dias, use apenas

25 10 * * 0-6 /home/pi/test.sh

EDIT: Isso está incorreto porque todos * marcam o crontab como executando a cada minuto. Descobrimos que era questão de tempo do sistema. Verifique novamente a hora do seu sistema. O daemon do cron opera fora do UTC. Como o script funcionou quando você definiu todos os campos como *, sabemos que a lógica real está funcionando.

    
por 14.02.2017 / 13:43
0

Para simplificar, eu teria o trabalho listado como:

25 10 * * * date > /home/pi/test.txt

Isso será executado às 10h25. Se não for executado neste momento, verifique o fuso horário em /etc/default/cron e altere-o, se necessário. Após a alteração, você desejará reiniciar o serviço service cron restart .

    
por 15.02.2017 / 15:31