Defina a variável de ambiente (TZ) para todos os scripts de inicialização e inittab

5

Estou trabalhando em um sistema Linux embarcado e procurando uma maneira de definir o fuso horário para todos os processos.

A pergunta é: Existe alguma possibilidade de definir a variável de ambiente TZ no momento da inicialização (scripts init) para que todos os outros scripts de inicialização tenham TZ definido no início?

O sistema é baseado nas ferramentas BusyBox. Eu tentei um script na pasta /etc/profile.d/ .

export TZ="GMT-1"

Mas os scripts de inicialização não têm o conjunto de variáveis.

A única maneira que vejo é que os scripts de inicialização all definem essa variável por si mesmos. Existem outras soluções para este problema?

    
por Klaus 01.03.2016 / 12:54

1 resposta

3

Se o seu sistema usar o BusyBox init e ele não tiver /etc/inittab , ele executará /etc/init.d/rcS no momento da inicialização. Se este for um script de shell, basta adicionar as definições de ambiente desejadas. Se isso não for um script de shell, você poderá alterar sua compilação para renomear /etc/init.d/rcS.bin e criar um script de shell /etc/init.d/rcS que termine com exec /etc/init.d/rcS.bin . Obviamente, se você alterou o caminho /etc/init.d/rcS na configuração de compilação, adapte-se a isso. As variáveis de ambiente definidas lá serão aplicadas a todos os daemons, mas não aos shells iniciados nos consoles.

Se você tiver /etc/inittab , verifique o que ele contém. A documentação está no arquivo de amostra . Você pode substituir entradas que executam somecommand por /usr/bin/env TZ=GMT-1 somecommand .

Essa é a maneira rápida e suja, mas na maioria dos casos você deseja permitir que o usuário final configure o fuso horário, por isso ele deve ser armazenado em um arquivo separado. Nesse caso, passe por um wrapper de shell (ou o script rcS ) e use algum código como

export TZ="$(cat /etc/TZ.txt)"

Observe que, dependendo da sua libc, pode haver ou não uma maneira melhor de definir o fuso horário, por exemplo, escrevendo as regras de fuso horário em /etc/TZ para uClibc.

    
por 02.03.2016 / 01:57