私は組み込みLinuxシステムで作業しており、すべてのプロセスのタイムゾーンを設定する方法を探しています。
問題は、他のすべてのinitスクリプトが起動時にTZ
を設定するように、ブート時にTZ
環境変数を設定する可能性はありますか(initスクリプト)?
システムはBusyBoxツールに基づいています。 /etc/profile.d/
フォルダ内のスクリプトを試しました。
export TZ="GMT-1"
ただし、initスクリプトには変数セットがありません。
私が見る唯一の方法は、all起動スクリプトがこの変数を自分で設定することです。この問題の他の解決策はありますか?
システムが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
で記述します。