Centosサーバーがあり、時間の変更中に時間が1時間後に移動したくありません。代わりに、時間が変更される数時間前にシステムクロックを遅くして時間が戻ったときに、私のサーバーを時間の変更後の最も遅い時間と同期させるようにしたいと思います。
答え1
答え2
ここに時間帯の混乱があると思います。
Unix / Linuxシステムで時間を維持する方法は、BIOSクロックとカーネルシステムクロックをUTCとして実行することです。これにより、ユーザーは1つ以上のタイムゾーンを持ちます。タイムゾーン変換により、デフォルトのUTCクロックがユーザーの現地時間として表示されます。
たとえば、見てみましょう。
# UTC date/time as known by the system clock
date -u
Tue 31 Jan 14:06:23 UTC 2017
# Local time in the UK
TZ=Europe/London date
Tue 31 Jan 14:06:25 GMT 2017
# Local time in France
TZ=Europe/Paris date
Tue 31 Jan 15:06:27 CET 2017
# Local time in west coast USA
TZ=US/Pacific date
Tue 31 Jan 06:06:30 PST 2017
ここに別のものがあります:
# UTC absolute reference
TZ=UTC ls -l whos_pointing.txt
-rw-r--r-- 1 roaima roaima 143 Jan 31 14:08 whos_pointing.txt
# Local time in the UK
TZ=Europe/London ls -l whos_pointing.txt
-rw-r--r-- 1 roaima roaima 143 Jan 31 14:08 whos_pointing.txt
# Local time in France
TZ=Europe/Paris ls -l whos_pointing.txt
-rw-r--r-- 1 roaima roaima 143 Jan 31 15:08 whos_pointing.txt
# Local time in west coast USA
TZ=US/Pacific ls -l whos_pointing.txt
-rw-r--r-- 1 roaima roaima 143 Jan 31 06:08 whos_pointing.txt
ファイルは同じファイルですが、日付/時刻は、特定の時刻にシステムが考える場所によって異なります。
# Back in the USA
export TZ=US/Pacific
ls -l whos_pointing.txt
-rw-r--r-- 1 roaima roaima 143 Jan 31 06:08 whos_pointing.txt
touch whos_pointing.txt
ls -l whos_pointing.txt
-rw-r--r-- 1 roaima roaima 143 Jan 31 06:16 whos_pointing.txt
# Jump across to the UK. Notice the file's timestamp has updated here too
export TZ=Europe/London
ls -l whos_pointing.txt
-rw-r--r-- 1 roaima roaima 143 Jan 31 14:16 whos_pointing.txt
システム全体のデフォルトのタイムゾーンを設定することは難しくなく、特定のユーザーが環境変数を使用してそれらをオーバーライドすることも難しくありませんTZ
。カリフォルニアにサーバーがあり、デフォルトのタイムゾーンはですが、US/Pacific
私のログインアカウントにはが含まれていますexport TZ=Europe/London
。
タイムゾーン変換ライブラリは、適用されるタイムゾーンの夏時間と冬時間の間の移動を自動的に処理します。システムクロックはジャンプしませんが、1時間(または30分単位)のオフセットは適切な瞬間に修正されます。データベースシステムは内部でシステムの絶対時間を使用するため、ユーザーの表示時間が大幅に前後にジャンプしても影響はありません。 NTPはシステム絶対時間を使用することもできます。これは世界中のさまざまなタイムゾーンにあるサーバーを処理する方法です(心配しないでください!)。