MENU

Ubuntu Server上で実行するJavaの時刻がUTCになってしまう問題に対応しました

Ubuntu Server上で実行しているJavaの時刻がUTCになってしまっていました。Minecraft ServerもJava上で動いているので、そのMinecraft Serverのログの時刻がずれてしまっていたことからこの問題に対応しました。

OS側はJSTに直していても、JavaはJavaでタイムゾーンを保持していることからこの問題が起きていたようです。もしかするとJavaのインストールより先にOS側をJSTに直していたらこの問題は起きなかったかもしれません。

目次

症状確認

dateを実行すると確かにJSTになっていて、OSはタイムゾーンが正しいことがわかります。
しかし、Minecraft Serverを起動するとそのログは9時間前を指していました。

日本時間は協定世界時より9時間進んでいるのでタイムゾーンの問題であることがわかります。

恒久的な対処を考えenvironmentにタイムゾーンを定義する

Windowsでいうところの「システム環境変数」にあたる部分を修正します。対象ファイルは「/etc/environment」なので、viで編集します。

sudo vi /etc/environment

最終行に「TZ=Asia/Tokyo」と記載します。

TZ=Asia/Tokyo

編集が終わったら上書きして再起動します。

動作確認

再起動後、Javaを実行して時刻を確認します。

これで時刻が一致するようになりました。

総括して

今回はユーザーに縛られることがない環境変数に記載しましたが、ほかにも「~/.profile」 や「~/.bashrc」に記載する方法があります。さらに、再起動すると消えてしまいますが、「export TZ=Asia/Tokyo」なども解決策になるかもしれません。

どれが正しいということはなく、状況によって使い分けるものであるとは思いますが、今回の環境では、「ほかのユーザーが別の事情でJavaを実行するときも、ログイン状況にかかわらずともJSTであってほしいと思い、/etc/environmentに記載しました。

皆さんの状況に合わせて選定していけばよいと思います。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

This site uses Akismet to reduce spam. Learn how your comment data is processed.

目次