como executar tarefas agendadas no GMT, não na hora local?

8

Como posso fazer as tarefas do cron serem executadas no GMT, não no horário local?

este é o meu arquivo crontab:

#m  h           d   m   wday    command
TZ=GMT
5   0,6,12,18   *   *   *   ~/Documents/bash/transfer.sh

meus trabalhos parecem estar funcionando na hora local (GMT + 11) Estou executando o os x snow leopard, mas moverei o código para o linux quando o desenvolvimento estiver concluído.

O ambiente linux pode ser um ambiente compartilhado onde eu possa ter menos controle sobre a configuração.

    
por compound eye 22.02.2011 / 12:27

3 respostas

8

Nem todas as versões de cron suportam a execução de trabalhos usando um fuso horário diferente do sistema.

Se o seu fizer, é provável que a especificação seja TZ=GMT ou TZ=UTC (sem os colchetes angulares). Em alguns casos, a variável seria CRON_TZ .

A melhor coisa a fazer é verificar a documentação específica do sistema em particular. Veja man 5 crontab .

    
por 22.02.2011 / 15:17
3

Se a sua hora local for Europe/London . Então:

crontab -e    # or 'cru' on some machines
>>>
# Run COMMAND at 03:15am UTC every morning
15 3 * * * [ "$(date +\%z)" = "+0000" ] && COMMAND
15 4 * * * [ "$(date +\%z)" = "+0100" ] && COMMAND
<<<

Outro exemplo:

Se o seu horário normal for +0500 shift de UTC , e seu horário de verão for +0600 shift de UTC . Em seguida, adicione +5 a todas as horas especificadas no exemplo acima. Isso significa ser executado em 08:15am e 09:15am de seu horário local, respectivamente. Então suas linhas cron modificadas ficariam assim:

crontab -e    # or 'cru' on some machines
>>>
# Run COMMAND at 03:15am UTC every morning
15 8 * * * [ "$(date +\%z)" = "+0500" ] && COMMAND
15 9 * * * [ "$(date +\%z)" = "+0600" ] && COMMAND
<<<

[EDIT] Certifique-se de \ escapar de qualquer porcentagem % caracteres no seu arquivo crontab. Como crontab interpreta-os para ser um separador de nova linha. por exemplo. % - > \% .

    
por 24.05.2015 / 18:48
0

Você talvez possa envolver o binário original do crond.

mv /usr/sbin/crond /usr/sbin/crond.real
cat > /usr/sbin/crond
#!/bin/sh
TZ=GMT
export TZ
exec crond.real ${1+"$@"}
    
por 24.02.2011 / 01:02