シェルスクリプトを使用してLinuxでタイムゾーンと時間を設定する

シェルスクリプトを使用してLinuxでタイムゾーンと時間を設定する

Linux OS を使用してルータでタイムゾーンと時間を設定するのに役立ちます。ネットワークからリモートで (Linuxカーネル2.6.30ベースのLinuxオペレーティングシステム)。
これを行うには、CGIとShellscriptを使用します。ステップは次のとおりです。

  1. ブラウザから時間とタイムゾーン情報を取得する
  2. CGIを実行して時間を設定する(Cを使用)
  3. CGIはTimezone_Settingシェルスクリプトを実行します。

手順3でスクリプトで行った操作は次のとおりです。

パラメータ($1)は、次の文字列(A)のいずれかです。
「GMT-12」、「GMT-11」、「GMT-10」、...「GMT」、「GMT+1」、.. + 12"。

以下を使用してタイムゾーンを設定できるようです。

ln -sf /usr/share/zoneinfo/Japan /etc/localtime

質問:
1) 私がやっていることが正しいのか?
2)A文字列で上記のコマンドを正しく使用するにはどうすればよいですか?

注:上記のコマンドでは、「日本」は私の「/usr/share/zoneinfo」ディレクトリにあるファイルの1つです。次のコマンドを使用する前に変換できます。

"GMT-9" <-> Japan

"GMT-5" <-> EST
( etc. )

しかし、これは良い解決策ではないようです。

答え1

タイムゾーンの設定方法は、ルータが使用するCライブラリによって異なります。そしてglibc非組み込みLinuxシステムで使用されるCライブラリで、/etc/localtime次のファイルまたはそのコピーへのシンボリックリンクです。/usr/share/zoneinfoそしてユークリーブ(自宅ルーターで使用)タイムゾーン情報は、環境変数の仕様/etc/TZで保存されます(下記参照)。TZルーターがどの方法を使用しているかを確認してください。ルータがGlibcを使用している場合、アプローチは正しいようです。

GMT+9そしてJapan時間帯も違います。GMT+9GMTよりも常に9時間早いタイムゾーンを表します。Japanつまり、日本ではいつでも夏時間日本の過去と将来のタイムゾーンの変更。ああ、そしてGMT-9方法が間違っています。

特定のプログラムでのみタイムゾーンを設定する必要がある場合は、以下を使用してください。TZ環境変数タイムゾーン名または仕様に設定します。たとえば、ほとんどの西ヨーロッパ諸国の現在のDSTルールのタイムゾーン仕様は次のとおりです。

TZ=CET-1CEST,M3.5.0/2,M10.5.0/3

UTC + 1(例:CET - 1 = UTC)に対応するというタイムゾーンを示しますCET。タイムゾーンは、3月の最後の日曜日の午前2時から3月の最後の日曜日の午前3時の間のCEST(デフォルト+ 1時間オフセット)です。 10月の間。単純な年中オフセットの場合は、次の設定を使用できます。

TZ='<GMT+9>-9'

関連情報