Fuso horário, definição de hora no Linux usando o shellscript

1

Eu realmente preciso da sua ajuda em um trabalho de configuração de fuso horário e hora em um roteador usando o sistema operacional Linux remotamente da Web (Linux OS baseado no Linux Kernel 2.6.30).
Para cumprir este trabalho, eu uso CGI e Shellscript. Abaixo estão as etapas:

  1. Obtenha informações sobre hora, fuso horário do navegador
  2. Executa CGI para definir o horário (usando C)
  3. CGI executa shellscript Timezone_Setting

Aqui está o que estou fazendo para o script na etapa 3:

O parâmetro ($ 1) é um dos seguintes string (A):
"GMT-12", "GMT-11", "GMT-10", ... "GMT", "GMT + 1", .. "GMT + 12".

Parece que posso usar o seguinte para definir o fuso horário:

ln -sf /usr/share/zoneinfo/Japan /etc/localtime

Perguntas:
1) Estou fazendo o caminho certo?
2) Como posso usar o comando acima com minhas cordas A corretamente?

Nota: No comando acima, "Japão" é um dos arquivos no meu diretório "/ usr / share / zoneinfo". E eu posso fazer uma conversão antes de usar o comando como:

"GMT-9" <-> Japan

"GMT-5" <-> EST
( etc. )

mas não parece a boa solução.

    
por sees 01.09.2011 / 20:13

1 resposta

1

Como definir o fuso horário depende de qual biblioteca C seu roteador usa. Com Glibc , a biblioteca C usada em sistemas Linux não incorporados, /etc/localtime é um link simbólico para um arquivo em /usr/share/zoneinfo ou uma cópia de um. Com uClibc (o meu roteador doméstico usa), as informações de fuso horário estão em /etc/TZ e são armazenadas como% especificação da variável de ambienteTZ (veja abaixo). Verifique qual método seu roteador usa. Se o seu roteador usa Glibc, sua abordagem parece correta.

GMT+9 e Japan são fusos horários diferentes. GMT+9 significa um fuso horário que está sempre 9 horas adiantado em relação ao GMT. Japan significa o tempo que for no Japão, tendo DST e qualquer mudança de fuso horário no passado e no futuro no Japão. Ah, e GMT-9 no caminho errado.

Se você precisar apenas definir o fuso horário em um determinado programa, execute-o com as TZ variável de ambiente definida para o nome ou especificação do fuso horário. Por exemplo, uma especificação de fuso horário para as regras atuais de horário de verão da maioria dos países da Europa Ocidental se parece com isso:

TZ=CET-1CEST,M3.5.0/2,M10.5.0/3

significa que o fuso horário é chamado CET , corresponde a UTC + 1 (ou seja, CET - 1 = UTC) e o fuso horário é CEST (com um deslocamento padrão de +1 hora) entre o último domingo de março às 2h último domingo de outubro às 3 da manhã. Para um deslocamento simples durante todo o ano, você pode usar uma configuração como

TZ='<GMT+9>-9'
    
por 02.09.2011 / 02:25