Abrandar o relógio do sistema no servidor Linux

3

Eu tenho o servidor Centos, no qual não quero voltar o tempo para uma hora durante a mudança de horário. em vez disso, quero desacelerar o relógio do sistema algumas horas antes da mudança de horário para que, quando o tempo voltar, meu servidor sincronize com a última hora após a mudança de horário

    
por Mat55 30.01.2017 / 02:46

2 respostas

3

Como dito nos comentários, a ativação do DST não alterará a sua hora , apenas o fuso horário . Portanto, você não precisa mexer com o relógio do servidor (e é aconselhável não fazer isso).

Em uma nota lateral, há um projeto que faz algo semelhante ao que você deseja. O Google o usa para "manchar" o segundo extra por mais tempo sempre que o IERS aplica um segundo maior . Basicamente, durante um dia inteiro, os relógios do servidor do Google ficam um pouco mais lentos, de modo que, quando o segundo bissexto é aplicado à meia-noite, os servidores não experimentam nenhum salto de tempo. Mais uma vez, eu adiciono isso apenas FYI - isso não é uma solução para o seu caso.

    
por 30.01.2017 / 13:23
2

Acho que há uma confusão de fuso horário aqui.

A maneira esperada de manter o tempo em um sistema Unix / Linux é ter o relógio do BIOS e o relógio do sistema kernel funcionando no UTC. Você então tem um (ou mais) fuso horário para seus usuários. A conversão de fuso horário garante que o relógio UTC subjacente seja exibido na hora local do usuário.

Vamos tentar dar um exemplo:

# UTC date/time as known by the system clock
date -u
Tue 31 Jan 14:06:23 UTC 2017

# Local time in the UK
TZ=Europe/London date
Tue 31 Jan 14:06:25 GMT 2017

# Local time in France
TZ=Europe/Paris date
Tue 31 Jan 15:06:27 CET 2017

# Local time in west coast USA
TZ=US/Pacific date
Tue 31 Jan 06:06:30 PST 2017

Aqui está outro:

# UTC absolute reference
TZ=UTC ls -l whos_pointing.txt
-rw-r--r-- 1 roaima roaima 143 Jan 31 14:08 whos_pointing.txt

# Local time in the UK
TZ=Europe/London ls -l whos_pointing.txt
-rw-r--r-- 1 roaima roaima 143 Jan 31 14:08 whos_pointing.txt

# Local time in France
TZ=Europe/Paris ls -l whos_pointing.txt
-rw-r--r-- 1 roaima roaima 143 Jan 31 15:08 whos_pointing.txt

# Local time in west coast USA
TZ=US/Pacific ls -l whos_pointing.txt
-rw-r--r-- 1 roaima roaima 143 Jan 31 06:08 whos_pointing.txt

O arquivo é o mesmo arquivo, mas sua data / hora é exibida de forma diferente, dependendo de onde o sistema pensa que estou a qualquer momento.

# Back in the USA
export TZ=US/Pacific
ls -l whos_pointing.txt
-rw-r--r-- 1 roaima roaima 143 Jan 31 06:08 whos_pointing.txt
touch whos_pointing.txt
ls -l whos_pointing.txt
-rw-r--r-- 1 roaima roaima 143 Jan 31 06:16 whos_pointing.txt

# Jump across to the UK. Notice the file's timestamp has updated here too
export TZ=Europe/London
ls -l whos_pointing.txt
-rw-r--r-- 1 roaima roaima 143 Jan 31 14:16 whos_pointing.txt

Não é difícil configurar um fuso horário padrão em todo o sistema, nem é difícil para determinados usuários substituí-lo pela variável de ambiente TZ . Eu tenho um servidor na Califórnia, onde o fuso horário padrão é US/Pacific , mas minha própria conta de login contém export TZ=Europe/London .

As bibliotecas de conversão de fuso horário manipulam automaticamente o salto entre o horário de verão e o horário de inverno nos fusos horários em que são aplicadas. O relógio do sistema não salta, mas o deslocamento horário (ou a cada 30 minutos) é modificado no instante apropriado. Os sistemas de banco de dados usam o tempo absoluto do sistema internamente, para que eles não sejam afetados por saltos aparentes para frente ou para trás no tempo exibido pelos usuários. O NTP também trabalha com o tempo absoluto do sistema, que é como ele pode lidar com servidores em diferentes fusos horários ao redor do mundo (não precisa se preocupar!).

    
por 31.01.2017 / 15:19