Construir a instrução de registro de data e hora do arquivo Cronjob com o fuso horário local

0

O seguinte trabalho raiz do Crontab está sendo usado para salvar cópias periódicas de uma página da Web a cada 15 minutos. Servidor de nuvem Ubuntu 16.04.2 LTS AMD64 on-line 24/7. A hora mostrada pela função de data é UTC.

*/15 * * * * /usr/bin/wget --convert-links --output-document=/home/user/Firefox/News-Headlines-$(date +\%Y-\%m-\%d_\%H:\%M:\%S).html www.news.tld

O seguinte arquivo está sendo salvo conforme esperado:

News-Headlines-2017-04-11_02:15:01.html < Time in UTC

O timestamp desejado é para TZ = America / Detroit, atualmente -4 UTC

News-Headlines-2017-04-10_22:15:01.html < Time America/Detroit

PERGUNTA

Como o comando date pode ser alterado para produzir o nome do arquivo com o timestamp TZ = America / Detroit?

News-Headlines-2017-04-10_22:15:01.html

NOTAS

Eu obtive o nome correto do fuso horário de Lista de fusos horários

en.wikipedia.org/wiki/List_of_tz_database_time_zones

Estou ciente dessas linhas de comando híbridas para obter uma data de mudança de horário a partir do comando "date".

Saída do comando de data do Vanila

$ date
Mon Apr 10 20:52:29 UTC 2017

Saída deslocada do tempo

$ TZ=America/Detroit date
Mon Apr 10 16:25:49 EDT 2017

Eu tentei

*/15 * * * * /usr/bin/wget --convert-links --output-document=/home/user/Firefox/News-Headlines-$(TZ=America/Detroit date +\%Y-\%m-\%d_\%H:\%M:\%S).html www.news.tld

O registro de data e hora salvo não é afetado:

News-Headlines-2017-04-11_02:15:01.html  < Time in UTC
    
por ml48603 10.04.2017 / 23:06

2 respostas

0

Experimentou o comando date a partir do crontab raiz. Pelo que eu observei, o comando date run from crontab não reconhece todas as designações de fuso horário listadas em:

en.wikipedia.org/wiki/List_of_tz_database_time_zones

Reescrevendo o comando citado na postagem original com um designador de fuso horário baseado em UTC em oposição ao designador de formato País / Cidade.

*/15 * * * * /usr/bin/wget --convert-links --output-document=/home/user/Firefox/News-Headlines-$(TZ=UTC4 date +\%Y-\%m-\%d_\%H:\%M:\%S).html www.news.tld

NOTA: Seja usado o GMT ou o UTC, os resultados são os mesmos.

Resulta no seguinte nome de arquivo com data e hora com data e hora de -4 UTC, apesar do uso do designador de fuso horário UTC4 = UTC +4.

# date
Tue Apr 11 18:34:36 UTC 2017

News-Headlines-2017-04-11_14:34:36.html

Embora essa solução funcione, não se entende por que usar o designador de fuso horário UTC4 = UTC +4 resulta em um registro de data e hora UTC -4.

Experiência

Usando os resultados do designador UTC -4, o oposto:

$ wget --convert-links --output-document=/home/mark/Downloads/Firefox/FoxNews-Headlines-$(TZ=UTC-4 date +\%Y-\%m-\%d_\%H:\%M:\%S).html www.foxnews.com

# date
Tue Apr 11 18:50:08 UTC 2017

News-Headlines-2017-04-11_22:50:08.html

Este carimbo de data / hora é de 4 horas à frente do UTC com um UTC-4 = UTC -4. Não se entende por que usar o designador de fuso horário UTC-4 = UTC -4 resulta em um timestamp UTC +4.

    
por ml48603 11.04.2017 / 21:00
0

Definindo a variável de ambiente TZ globalmente nos trabalhos do arquivo crontab:

firas@momiji ~ % cat /etc/cron.d/timestamp 
TZ=America/Detroit

* * * * * firas /usr/bin/wget --quiet --convert-links --output-document=/home/firas/News-Headlines-$(date +\%Y-\%m-\%d_\%H:\%M:\%S).html www.fkraiem.org
firas@momiji ~ % date
Wed Apr 12 04:49:20 JST 2017
firas@momiji ~ % TZ=America/Detroit date
Tue Apr 11 15:49:34 EDT 2017
firas@momiji ~ % ls News-Headlines-2017-04-11_15:4*
News-Headlines-2017-04-11_15:46:01.html  News-Headlines-2017-04-11_15:48:01.html
News-Headlines-2017-04-11_15:47:01.html  News-Headlines-2017-04-11_15:49:01.html

Coisas a serem observadas:

  • Execute wget como você mesmo e não como raiz, pois geralmente é perigoso executar qualquer coisa que processe dados não confiáveis como raiz.
  • Execute wget com --quiet para suprimir toda a saída (que é enviada de outra forma por e-mail para o usuário).
por fkraiem 11.04.2017 / 21:53