今回はLinuxでサマータイムを疑似的に?無効化する方法についてまとめたいと思います。
タイムゾーンでサマータイムありの地域を選択しているが、
サマータイムはオフにして運用したい場合に使えるかな?と思い調べてみました!!
Linuxだとタイムゾーンごとにサマータイム有効・無効が決まっているので、どうしても無効化したいことがあった場合タイムゾーンを変えるしかないのか??
と思ったのが調査のきっかけです。
■Linuxでのタイムゾーン設定
サマータイム有効・無効を切り替える前にタイムゾーンを切り替える方法についてまとめます。
基本的にLinuxではタイムゾーン毎にサマータイム有効にする地域、無効にする地域が分かれているので、
タイムゾーンを切り替えることで自動的に有効・無効が切り替わる仕組みになります。
linuxでタイムゾーンを切り替える手順はこちらになります。
※タイムゾーンとしてTokyoをセットするケースを例として取り上げます。
sudo rm -f /etc/localtime sudo ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
/etc/localtimeとしてzoneinfo内のファイルのシンボリックを作成すればOKになります。
ですので、UTCにする場合には、
/usr/share/zoneinfo/UTCを/etc/localtimeとしてシンボリックリンクを作成すればOKです。
【UTCの場合】
sudo rm -f /etc/localtime sudo ln -s /usr/share/zoneinfo/UTC /etc/localtime
■サマータイム無効化方法
先ほどの方法でタイムゾーンの設定が行えるのですが、、、
タイムゾーンですとタイムゾーンによってサマータイムが有効・無効が自動的に決まってしまうため、
有効となるタイムゾーンで無効に出来ていない。。
そこで、サマータイム有効・無効を探したのですが、、
そんなものは用意されていない!!
基本的にタイムゾーンで管理しなさい!!というのがスタンスのよう。
しかし!!
タイムゾーンの切り替えにより疑似的に切り替える方法があります。
それは、、、
/usr/share/zoneinfo/Etc配下に格納されている、
GMT+**やGMT-**を用いる方法です。
どうやらEtc配下に格納されたファイルはタイムゾーンは全て無効になっており、時刻の±のみを操作するファイルのようです。
このため、地域に合わせてGMT+**やGMT-**を使用すればOKになります。
手順は先ほどと同様に、
sudo rm -f /etc/localtime sudo ln -s /usr/share/zoneinfo/Etc/GMT** /etc/localtime
でOK!!
地域ごとに動かす時刻を把握しなければならないので、結構手間ですが、、、
やれないことはない!!
といった感じでしょうか??
■(補足)タイムゾーンリスト
タイムゾーンのリストは下記にまとまっておりますので、必要に応じて参考にしてください。
各地域毎のGMTオフセット時間も掲載されておりますので、どうしても切り替えたい場合には参考になるかと思います。
en.wikipedia.org