Término do horário de verão 2012/2013

Em 2008, o governo brasileiro fixou uma data para início e término do horário de verão através do Decreto 6.558. Essa medida vale para os estados RS, SC, PR, SP, RJ, ES, MG, GO, MT, MS e DF e obedece às seguintes regras:

Início – às 00:00h do 3º domingo de Outubro;
Término – às 00:00h do 3º domingo de Fevereiro.

A regra de término tem uma exceção: quando o 3º domingo de Fevereiro cair no Carnaval, o término do horário de verão será às 00:00h do domingo subsequente; sendo assim o horário de verão 2012/2013 que entrou em vigor às 0:00 hrs do dia 21/10/2012 se encerra às 23:59 do dia 16/02/2012.

Se o sistema está atualizado, provavelmente a mudança irá acontecer de forma automática. Mas como diz o provérbio “seguro morreu de velho”, não custa nada verificar se o SO está pronto para o término do horário de verão.

Para checar:

1) Verificar o timezone:

$ cat /etc/timezone
America/Sao_Paulo

Obs.: O procedimento acima é válido para Debian e seus derivados. Para sistemas baseados em Red Hat, o arquivo é /etc/sysconfig/clock.

2) Checar se o arquivo do timezone está configurado com a data correta para início e término do horário de verão:

$ zdump -v /usr/share/zoneinfo/America/Sao_Paulo | grep 201[23] | head -6 | tail -4

Como a saída do comando é extensa, são aplicados filtros, para exibir somente ocorrências de início e fim do horário de verão ciclo 2012/2013.

3) Um último teste: utilizar o comando date para simular data futura e verificar se o horário irá mudar corretamente.

echo -ne “Hora Atual:                  $(date) \n”; echo -ne “Horario de Verao:            $(date –date=”1 day”) \n”; echo -ne “Termino do Horario de Verao: $(date –date=”2 days”) \n”

Hora Atual:                  Fri Feb 15 01:52:40 BRST 2013
Horario de Verao:            Sat Feb 16 01:52:40 BRST 2013
Termino do Horario de Verao: Sun Feb 17 00:52:40 BRT 2013

O comando date, com a opção -d/–date permite verificar a hora futura ou passada; no exemplo, verificou-se o horário atual, sábado e domingo, sendo que neste último, a hora não consta mais como BRST (BRazilian Summer Time) e sim BRT (BRazilian Time).

Ahn e por último… não sei o que acontece no cron, mas de vez em quando ele se perde com essas mudanças de horário… Então, se tiver tarefas agendadas, é legal dar um restart no serviço, só para garantir ;).

$ sudo restart crond

 

Anúncios

Horário de verão 2011/2012

No próximo final de semana, irá iniciar o horário de verão, estabelecido no Decreto 6.558 – Institui a hora de verão em parte do território nacional. Essa medida vale para os estados RS, SC, PR, SP, RJ, ES, MG, GO, MT, MS e DF e obedece às seguintes regras:

Início – às 00:00h do 3º domingo de Outubro;
Término – às 00:00h do 3º domingo de Fevereiro.

A regra de término tem uma exceção: quando o 3º domingo de Fevereiro cair no Carnaval, o término do horário de verão será às 00:00h do domingo subsequente ( o que irá acontecer no próximo ano).

Sendo assim o horário de verão 2011/2012 entra em vigor das 0:00 hrs do dia 16/10/2010 e vai até  as 0:00 hrs do dia 26/02/2011.

É importante ficar atento ao horário de verão, porque muitas aplicações dependem de horários determinados para executar, e caso o relógio não esteja configurado corretamente, pode causar erro nas tarefas agendadas. Além disso, em casos de incidentes de segurança, a precisão dos relógios dos sistemas é fundamental para manter a consistência dos logs e é imprescindível nas investigações e identificação de responsáveis.

Para saber se a máquina está configurada para o horário de verão:

$ zdump -v /usr/share/zoneinfo/America/Sao_Paulo | grep 201[12]
/usr/share/zoneinfo/America/Sao_Paulo  Sun Feb 20 01:59:59 2011 UTC = Sat Feb 19 23:59:59 2011 BRST isdst=1 gmtoff=-7200
/usr/share/zoneinfo/America/Sao_Paulo  Sun Feb 20 02:00:00 2011 UTC = Sat Feb 19 23:00:00 2011 BRT isdst=0 gmtoff=-10800
/usr/share/zoneinfo/America/Sao_Paulo  Sun Oct 16 02:59:59 2011 UTC = Sat Oct 15 23:59:59 2011 BRT isdst=0 gmtoff=-10800
/usr/share/zoneinfo/America/Sao_Paulo  Sun Oct 16 03:00:00 2011 UTC = Sun Oct 16 01:00:00 2011 BRST isdst=1 gmtoff=-7200
/usr/share/zoneinfo/America/Sao_Paulo  Sun Feb 26 01:59:59 2012 UTC = Sat Feb 25 23:59:59 2012 BRST isdst=1 gmtoff=-7200
/usr/share/zoneinfo/America/Sao_Paulo  Sun Feb 26 02:00:00 2012 UTC = Sat Feb 25 23:00:00 2012 BRT isdst=0 gmtoff=-10800
/usr/share/zoneinfo/America/Sao_Paulo  Sun Oct 21 02:59:59 2012 UTC = Sat Oct 20 23:59:59 2012 BRT isdst=0 gmtoff=-10800
/usr/share/zoneinfo/America/Sao_Paulo  Sun Oct 21 03:00:00 2012 UTC = Sun Oct 21 01:00:00 2012 BRST isdst=1 gmtoff=-7200

Na parte destacada, tenho a informação de que minha máquina está pronta para a mudança do horário. Em algumas máquinas com o localtime desatualizado, verifiquei que o horário de verão está programado para encerrar em 19/02/2012. Portanto, se verificar que o localtime aponta para o término do horário de verão nessa data, atualize o localtime – se possível (geralmente é o pacote tzdata), ou siga o procedimento abaixo para configurar manualmente:

1) Criar o arquivo verao.zic e inserir as linhas:

# vim verao.zic
Rule Brazil 2011 only – Oct 16 00:00 1 S
Rule Brazil 2012 only – Feb 26 00:00 0 –
Zone America/Sao_Paulo -3:00 Brazil BR%sT

2) Executar o comando zic:

# zic verao.zic

3) Se o seu arquivo /etc/localtime for um link, é interessante removê-lo e copiar o arquivo zoneinfo correspondente para o /etc. O motivo de não deixar o arquivo localtime como um link é que, caso o /usr seja uma partição separada e essa não for montada na inicialização, as informações contidas no localtime não serão carregadas:

# rm /etc/localtime
# cp /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime

Com isso, configuramos manualmente o horário de verão para a máquina. Uma dica aqui é reiniciar o cron depois dessa mudança… dizem que não é necessário, mas já me aconteceu de mudar o horário de verão e o cron se perder e não executar as tarefas dentro do novo horário :(.

Referências

Zic – compilador de horário de zona (Fuso Horário)
Hora Legal Brasileira
ANEEL – Informacoes Técnicas – Horário de Verão

Horário de verão 2010/2011

Em 2008, o governo brasileiro fixou uma data para início e término do horário de verão através do Decreto 6.558. Essa medida vale para os estados RS, SC, PR, SP, RJ, ES, MG, GO, MT, MS e DF e obedece às seguintes regras:

Início – às 00:00h do 3º domingo de Outubro;
Término – às 00:00h do 3º domingo de Fevereiro.

A regra de término tem uma exceção: quando o 3º domingo de Fevereiro cair no Carnaval, o término do horário de verão será às 00:00h do domingo subsequente.

Sendo assim o horário de verão 2010/2011 entra em vigor das 0:00 hrs do dia 17/10/2010 e vai até  as 0:00 hrs do dia 20/02/2011.

É importante ficar atento ao horário de verão, porque muitas aplicações dependem de horários determinados para executar e isso pode gerar uma tremenda dor de cabeça. Além disso, em casos de incidentes de segurança, a precisão dos relógios dos sistemas é fundamental para manter a consistência dos logs, além de ser imprescindível nas investigações e identificação de responsáveis.

No Linux, para alterar para o horário de verão, usamos os comandos zic e o zdump. O comando zic fará a mudança para o horário de verão, enquanto o comando zdump, pode ser utilizado para checar se a máquina já está configurada para o horário de verão.

Primeiramente, checar se o arquivo /etc/localtime é um arquivo e não um link para /usr/share/zoneinfo/Brazil/East ou para /usr/share/zoneinfo/America/Sao_Paulo. O motivo de não deixar o arquivo localtime como um link é que, caso o /usr seja uma partição e essa não for montada na inicialização, as informações contidas no localtime não serão carregadas:

# ls -ltr /etc/localtime
-rw-r–r– 1 root root 2001 2010-08-27 23:55 /etc/localtime

Em seguida, checamos com o comando zdump se a máquina já está configurada para o horário de verão:

# zdump -v /etc/localtime | grep 201[01]
/etc/localtime  Sun Feb 21 01:59:59 2010 UTC = Sat Feb 20 23:59:59 2010 BRST isdst=1 gmtoff=-7200
/etc/localtime  Sun Feb 21 02:00:00 2010 UTC = Sat Feb 20 23:00:00 2010 BRT isdst=0 gmtoff=-10800
/etc/localtime  Sun Oct 17 02:59:59 2010 UTC = Sat Oct 16 23:59:59 2010 BRT isdst=0 gmtoff=-10800
/etc/localtime  Sun Oct 17 03:00:00 2010 UTC = Sun Oct 17 01:00:00 2010 BRST isdst=1 gmtoff=-7200
/etc/localtime  Sun Feb 20 01:59:59 2011 UTC = Sat Feb 19 23:59:59 2011 BRST isdst=1 gmtoff=-7200
/etc/localtime  Sun Feb 20 02:00:00 2011 UTC = Sat Feb 19 23:00:00 2011 BRT isdst=0 gmtoff=-10800

/etc/localtime  Sun Oct 16 02:59:59 2011 UTC = Sat Oct 15 23:59:59 2011 BRT isdst=0 gmtoff=-10800
/etc/localtime  Sun Oct 16 03:00:00 2011 UTC = Sun Oct 16 01:00:00 2011 BRST isdst=1 gmtoff=-7200

Na saída do comando acima, na parte destacada, vejo que a minha máquina ja esta configurada para o horário de verão, não tenho que me preocupar. Se por algum motivo sua máquina Linux ou seus servidores não estejam configurados, o procedimento para configurar e:

1) Criar o arquivo verao.zic e inserir as linhas:

# vim verao.zic
Rule Brazil 2010 only – Oct 17 00:00 1 S
Rule Brazil 2011 only – Feb 20 00:00 0 –
Zone Brazil/East -3:00 Brazil BR%sT

2) Executar o comando zic:

# zic verao.zic

3) Se o seu /etc/localtime for um link, é interessante removê-lo e copiar o arquivo zoneinfo correspondente para o /etc (motivo foi comentado acima ;)):

# rm /etc/localtime
# cp /usr/share/zoneinfo/Brazil/East /etc/localtime

Com isso, o computador ja esta configurado para o horário de verão. Ahn, dizem que não é necessário… mas a experiência me ensinou a dar um restart no cron depois de atualizar as configurações para o horário de verão… Ajuda a prevenir surpresas desagradáveis ;).

Para restart o cron:

# /etc/init.d/cron restart

ou:

# service crond restart

Ahnnn… eu ainda não precisei atualizar horário de verão no windows; mas seguem dois links para quem precisa de ajuda para atualizar o horário no windows:

Mais informações:
Decreto no. 6.558 de 8 de setembro de 2008
ANEEL – Informacoes Técnicas – Horário de Verão
Hora Legal Brasileira

Página manual do comando zic:

# man zic