crontab e desacordo do DST com fuso horário diferente

2

De um servidor hospedado na Polônia (UTC +01: 00), há uma maneira em que eu possa consistentemente ter uma entrada crontab funcionando às 9h, horário de Nova York (UTC -05: 00)?

Para mim, isso não foi trivial, já que o horário de verão terminou no último domingo na Polônia, então trabalhos que eu tenho programado para rodar às 15:00 na hora local na maior parte do ano estão atrasados nesta semana por uma hora. de vista das bolsas de valores dos EUA.

Eu me lembro da decisão do Congresso há alguns anos para estender o DST, que coloca as coisas fora de sincronia por algumas semanas por ano.

Uma solução que nem tenho certeza que funcionaria (o que eu prefiro evitar de qualquer forma) é que quando eu tenho uma tarefa:

0 14 * * * something

Eu busco o tempo de NY TZ=":US/Eastern" date +%s e comparo usando a aritmética bash se devo sleep 3600 ou não antes de executar something

    
por Marcos 01.11.2012 / 16:58

2 respostas

1

Ok, como alterar o TZ env para date parece chamar a hora atual correta no Ubuntu, isso é pelo menos uma solução alternativa (aquela na qual eu estava tentando não confiar):

SHELL=/bin/bash

0 14 * * 1-5  [ $[10#$(date +\%H) - 10#$(TZ=":US/Eastern" date +\%H)] == 5 ] || sleep 3600; w;df

Portanto, o objetivo é executar w;df às 9h ET de segunda a sexta. Em vez da hora 15, coloquei 14 com a possibilidade de dormir uma hora (3600 segundos) antes de executar outros comandos.

    
por 01.11.2012 / 17:25
1

Se for o seu único trabalho, você pode usar um kluge como este:

# MM HH        DM MN DW   CMD
  0  *         *  *  *    TZ=':America/New_York'; if [ 'date +\%H' -eq 9 ]; then actual-command-here; fi

Eu acho que você pode definir a variável de ambiente assim em um crontab, se não apenas colocar a coisa toda em um sh -c ou um shell script ...

Eu tenho um cron job que preciso executar a cada duas semanas e uso um kluge similar.

    
por 01.11.2012 / 17:08

Tags