É possível definir um trabalho para executar na hora precisa com anacron

0

Eu configurei um trabalho anacron :

1@hourly 0 name wget https://mydomain.com/actions/controller  

Por isso, funciona de hora em hora, mas eu não escolhi o horário:
7:33, em seguida, 8:33 e, em seguida, 9:33 ...

É possível definir com precisão o tempo de execução como: 7:00 e depois 8:00 e 9:00 ...

Observação: meu provedor de hospedagem não me dá escolha entre cron e anacron , somente anacron está disponível no meu servidor virtual.

    
por migswd 06.08.2016 / 08:48

2 respostas

4

Não, anacron não pode ser usado para agendar trabalhos para execução em horários exatos como esse. É melhor usado para garantir que, por exemplo, o script de manutenção seja executado em frequências aproximadas, como diariamente, semanalmente ou mensalmente. Não tem uma resolução de tempo inferior a um dia.

Pessoalmente, inicio anacron de uma tarefa @hourly e @reboot cron (na minha máquina OpenBSD que não está em execução 24 horas por dia, 7 dias por semana) e cuida das tarefas diárias, semanais e mensais se essas tarefas precisam ser feitas:

@hourly /usr/local/sbin/anacron -s
@reboot /usr/local/sbin/anacron -s

O anacrontab :

SHELL=/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log

1       1       cron.daily      /bin/sh /etc/daily
7       3       cron.weekly     /bin/sh /etc/weekly
28      5       cron.monthly    /bin/sh /etc/monthly

Algumas versões de anacron parecem entender @daily , @weekly e @monthly (usando a versão 2.4.3, e seu anacrontab manual não menciona esses espaços reservados , mas este faz). No entanto, não consegui encontrar nenhuma implementação de anacron que suporte o uso de @hourly .

No entanto, se você executar anacron de hora em hora, como eu, e se um de seus trabalhos precisar ser executado, esse trabalho será executado na hora , ou seja, aproximadamente às 08:00 que 08:33. Mas não será executado por hora .

    
por 06.08.2016 / 10:02
5

O anacron é apenas para diárias, semanais e mensais, para horários específicos que eu recomendaria usando o cron.

* * * * * *
| | | | | | 
| | | | | +-- Year              (range: 1900-3000)
| | | | +---- Day of the Week   (range: 1-7, 1 standing for Monday)
| | | +------ Month of the Year (range: 1-12)
| | +-------- Day of the Month  (range: 1-31)
| +---------- Hour              (range: 0-23)
+------------ Minute            (range: 0-59)

então se você quer que ele seja executado às 7h você faria, "0 7 * * * * command" isto irá rodar as 7 da manhã todos os dias, lembre-se que a hora está no horário militar. 0-23.

    
por 06.08.2016 / 10:00

Tags