Elsaの技術日記(徒然なるままに)

主に自分で作ったアプリとかの報告・日記を記載

MENU

Linuxでサマータイムを無効にしつつタイムゾーンを操作する方法方法

今回は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

■最後に

今回はサマータイムを無効にしつつタイムゾーンを操作する方法についてまとめました。
まぁ、面倒な方法ですしLinux側でわざわざ地域毎にサマータイムの設定してくれているのですから、ちゃんとタイムゾーンを操作すればよいかと。
どうしても、、という場合の対応なのかな??
と個人的には感じる方法です。