Qual é o fuso horário padrão em um Linux típico (se houver)?

1

Eu estou administrando um sistema operacional Linux do CentOS 6.

Desejo remover todas as informações explícitas do fuso horário onde essas informações podem causar qualquer coisa, exceto o fuso horário UTC do sistema. Isso ocorre porque é um modelo de uma máquina virtual e também porque foi decidido que o fuso horário padrão é UTC.

Preciso alterar o /etc/sysconfig/clockarquivo (suponho que essa seja uma entidade de configuração específica do CentOS) ou /etc/localtime, ou ambos? Posso remover os dois e voltará ao UTC ou a outros padrões intrínsecos? Eu simplesmente não consigo encontrar documentação sobre como o sistema se comporta sem esses arquivos, por exemplo. Ou talvez eu também não deva remover, mas por que há uma preferência de fuso horário distribuída em dois arquivos? A menos que tenha um significado ligeiramente diferente em cada um deles?

Eu posso testar empiricamente, claro, mas eu posso mudar a distro no futuro, e então terei outro fuso horário novamente, enquanto meus scripts tentam capturar compatibilidade de distro-neutra.

amn
fonte

Respostas:

4

O fuso horário padrão não é fuso horário, ou seja, hora UTC. Não há informações sobre a zona codificada, já que ela pode rapidamente se tornar incorreta / obsoleta.

O relógio do kernel sempre roda no UTC (ou pelo menos o que ele acha que é o UTC). Por padrão, ele espera ler a hora UTC do relógio de hardware (RTC), mas permite que o processo de inicialização especifique o deslocamento "horário local" correto, já que a maioria dos PCs mantém a hora local no RTC.

O espaço do usuário trabalha com registros de data e hora "época" baseados em UTC, mas lê /etc/localtimeou a $TZvariável de ambiente ao exibir as datas. Se nenhum dos dois existir, você receberá o UTC.

Você também pode defini-los explicitamente como "UTC" ou "Etc / UTC" se quiser (por exemplo, export TZ=UTCsubstituir temporariamente a zona do sistema).


Algumas distribuições dividir a configuração desde zoneinfo próprios arquivos não tem o nome da zona interior, por isso uma vez que o administrador copiado /usr/share/zoneinfo/Europe/Londonpara /etc/localtime, já não é possível saber que era "Europa / Londres".

Por exemplo, o nome é necessário ao mostrar a zona atual nas telas de configuração ou ao atualizar o localtimearquivo em cada inicialização (ele precisa ser copiado para / etc novamente sempre que o time zoneinfo for atualizado).

Outras distribuições resolvem isso ligando simbolicamente o arquivo zoneinfo e lendo o destino do symlink. No entanto, isso precisa /usrser montado muito cedo, o que não é apreciado por graybeards.

Os arquivos de configuração não são portáteis; /etc/sysconfigé específico da Red Hat (o Debian tem /etc/default). No entanto, nos sistemas systemd , a abordagem de link simbólico é sempre usada e existe uma timedatectl set-timezoneferramenta para alterá-la.

grawity
fonte
Muito útil, obrigado. Mas eu li partes da sua resposta para ser um pouco contraditório - primeiro você diz que o fuso horário padrão não é fuso horário, mas depois diz que se nenhum dos [arquivos de configuração] existir, eu receberei o UTC.
amn
1
@ amn: É a mesma coisa. Todos os outros fusos horários são especificados como um deslocamento na parte superior do horário UTC. No Linux, zdump -v UTCmostrará que não há ajustes.
Grawity
Ok, bem no meu caso, o meu /etc/sysconfig/clockestá vazio há algum tempo, já que eu assumi que remover a variável ZONE me ajudaria a voltar para o UTC. Mas depois de observar dateme dando tempo em EDT (eu não tinha TZ no meu ambiente), eu rastreei até o /etc/localtimearquivo, que parece estar carregando os dados para o fuso horário EDT (não um symlink, mas corresponde à assinatura MD5 /usr/share/zoneinfo/US/Easterne um par de outras). Eu pensei que /etc/sysconfig/clockfaz com que o sistema seja atualizado /etc/localtimeautomaticamente. Talvez só o faça quando o primeiro realmente contém algum texto?
amn
Bem, sim, o processo de inicialização não pode realmente adivinhar o arquivo zoneinfo correto se a configuração estiver vazia. (Mesmo caçar por hash não iria funcionar, uma vez que a questão toda é para atualizar o arquivo quando ele é alterado .)
grawity
1

Na minha linha de trabalho, as máquinas se movem fisicamente ao redor do mundo de tempos em tempos, então a associação com um fuso horário só causaria problemas.

O que eu faço, como também sou um grande fã da UTC, é definir o fuso horário para Reykjavik. Isso resulta em UTC +0, sem esse desagradável DST.

O que você faz para mudar isso quando necessário é fazer uma ligação simbólica /etc/localtimepara qualquer definição de fuso horário adequada /usr/share/zoneinfo/. Eu não tenho certeza se isso é específico do CentOS, nós apenas usamos muitos servidores CentOS.

Jarmund
fonte
Ao contrário de definir o fuso horário para apenas UTC?
Grawity
@grawity Eu vi sistemas que não têm uma definição para o UTC.
Jarmund