私は組み込みLinuxシステムを開発しており、すべてのプロセスにタイムゾーンを設定する方法を探しています。
問題は、起動時に他のすべてのinitスクリプトがすでに設定さTZ
れるように、起動時に環境変数(initスクリプト)を設定できますか?TZ
このシステムはBusyBoxツールに基づいています。フォルダ内のスクリプトを試してみました/etc/profile.d/
。
export TZ="GMT-1"
ただし、初期化スクリプトは変数を設定しません。
私が見る唯一の方法はみんな起動スクリプトはこの変数自体を設定します。この問題に対する他の解決策はありますか?
答え1
システムは 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
。
これは迅速で汚れたアプローチですが、ほとんどの場合、エンドユーザーがタイムゾーンを設定できるようにするため、別々のファイルに保存する必要があります。この場合、シェルラッパー(またはscript)を経て、次のrcS
ようなコードを使用します。
export TZ="$(cat /etc/TZ.txt)"
/etc/TZ
libcによっては、uClibcのタイムゾーンルールを作成するなど、タイムゾーンを設定するより良い方法がある場合とない場合があります。