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

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

私は組み込み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/TZlibcによっては、uClibcのタイムゾーンルールを作成するなど、タイムゾーンを設定するより良い方法がある場合とない場合があります。

おすすめ記事