web-dev-qa-db-ja.com

すべての起動スクリプトとinittabに環境変数(TZ)を設定する

私は組み込みLinuxシステムで作業しており、すべてのプロセスのタイムゾーンを設定する方法を探しています。

問題は、他のすべてのinitスクリプトが起動時にTZを設定するように、ブート時にTZ環境変数を設定する可能性はありますか(initスクリプト)?

システムはBusyBoxツールに基づいています。 /etc/profile.d/フォルダ内のスクリプトを試しました。

export TZ="GMT-1"

ただし、initスクリプトには変数セットがありません。

私が見る唯一の方法は、all起動スクリプトがこの変数を自分で設定することです。この問題の他の解決策はありますか?

5
Klaus

システムがBusyBox initを使用していて、/etc/inittabがない場合は、ブート時に/etc/init.d/rcSが実行されます。これがシェルスクリプトの場合は、必要な環境定義を追加するだけです。これがシェルスクリプトでない場合は、ビルドを変更して/etc/init.d/rcS.binの名前を変更し、末尾が/etc/init.d/rcSのシェルスクリプトexec /etc/init.d/rcS.binを作成できます。もちろん、ビルド構成でパス/etc/init.d/rcSを変更した場合は、それに合わせてください。そこで定義された環境変数はすべてのデーモンに適用されますが、コンソールで起動されたシェルには適用されません。

/etc/inittabをお持ちの場合は、内容を確認してください。ドキュメントは サンプルファイル にあります。 somecommandを実行するエントリを/usr/bin/env TZ=GMT-1 somecommandに置き換えることができます。

これは簡単な方法ですが、ほとんどの場合、エンドユーザーがタイムゾーンを構成できるようにしたいので、別のファイルに保存する必要があります。その場合は、Shellラッパー(またはrcSスクリプト)を実行して、次のようなコードを使用します。

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

Libcによっては、タイムゾーンを設定するためのより良い方法がある場合とない場合があることに注意してください。 uClibcのタイムゾーンルールを/etc/TZで記述します。