こんばんは、こうちゃんです。
今回は、Linuxを使用するにあたってよく起きる現象、Linuxあるあるの中で、特に最初に出くわしがちな事例と解消法のご紹介です。
まず、Linuxインストール時に、多々遭遇する現象として、
表示時刻が現実とズレている
があります。
せっかくこれから使い始めようとしているのに、まさかの表示時刻がおかしいと困りますよね。
本ページではそうした際の対処法の方を解説し、快適なLinuxワークを送っていただけるように進めてまいります。
よろしければ最後までお付き合いください。
Linux上で、表示時刻がズレてしまう場合、
これはいくつか要因が考えられますが、だいたい起きる現象としては以下2つのどちらかですので、それぞれの場合について詳しく解説していきます。
まず、Linux上で起きる時刻ズレとは、
1.パソコンが認識している時刻がズレているため、表示時刻がおかしい
2.設定されている時刻は正しいものの、日本の標準時(JST)でなく、世界の標準時(UTC)で表示されてしまう
のいずれかである場合がほとんどです。
※レア事例として、時刻の基準がアフリカになってしまった、とかもありえますが、そうした例外事項も、こちらでこれから紹介する方法で直る場合がほとんどですので、レア事例はちょっと置いておくこととします
まずは1.の対処方法から説明しますが、たいてい2.の対応もセットで行うことになりますので全必要作業を流れでご説明。
Linuxはディストリビューションにもよりますが、インストール時にタイムゾーンを聞かれ、正しく選択していれば自動で時刻合わせもしてくれるものが多いですが、中には自動での時刻合わせには対応していないものや、タイムゾーン設定を間違えた場合、ネットに繋がっていなかったため正しく時刻を取得できなかった場合など、いくつかのケースで時刻ズレは生じます。
そんな時にための修正手順を。
1.まずは現在時刻確認
Linuxの認識している時刻を確認するのに簡単なのは、dateコマンドですので、
ターミナルを開いて、
date
と打ってみましょう。
$ date ←エンターキー
表示→ 2026年 7月 2日 木曜日 01:46:39 JST
のように、現在の設定時刻が出てくるかと。
これが正しければまず問題がないのですが、ズレている場合は、ネットワーク経由で正しい世の中の時刻と同期してしまうのが一番です。
2.必要コマンドインストール
手法としては、ntpdate コマンドを使って、日本の高精度なタイムサーバー(NICTなど)に同期させます。
なお、このntpdateコマンドが入っていない場合もありますので、コマンドのインストールから順に。
sudo apt update && sudo apt install ntpdate
※Debian系ですとこのコマンドですが、使用しているのがCentOSなどパッケージ管理にyumを使用している場合は、適宜aptコマンドをyumに読み替えてください
こちらのコマンドを実行し、まだインストールされていない場合、インストールするか聞かれますので、Y を押下してインストールしましょう。
3.時刻同期
前段階のコマンドでntpdateコマンドが用意されましたので、いよいよ実際に同期させるべく
sudo ntpdate -u ntp.nict.jp
と入力します。
(※ -u オプションは、ファイアウォールにブロックされるのを防ぐために、空いているポートを使って通信する指定です)
これで画面上の時刻が現在の正しい日本時間(JST)にパッと切り替わるはずです。
4.正しくなった時刻をマザーボード(内蔵時計)に保存する
これだけだと、また再起動したときに元のズレた時刻に戻ってしまう可能性があります。今同期した「正しいシステム時刻」を、マザーボードの内蔵時計(ハードウェアクロック)へしっかりと書き込みます。
sudo hwclock --systohc --localtime
※ローカルタイム形式で書き込みます
これで次回再起動したときも、マザーボードから正しい時刻が読み込まれるようになります。
5.タイムゾーンを「アジア/東京」に再設定する
ここまででだいたい時刻は正しくなるものですが、タイムゾーン設定が間違っていたりするとデスクトップの時計表示などが世界の標準時とかで、日本の時刻とですと9時間ズレの表記になってしまっている場合もあります(問題2.のケースですね)。
この対応のために、タイムゾーンの指定、および、再起動でクリアされないように固定も行っていきます。
まずはシステム自体に「ここは日本だ」と正しく認識させます。ターミナル(端末)を開き、以下のコマンドを実行してください。
sudo dpkg-reconfigure tzdata
地理的領域の選択画面が出るので、「アジア (Asia)」を選択します。
次の画面で、時間帯の中から「東京 (Tokyo)」を選択して確定します。
6.内蔵時計の同期設定を修正する
特にDebianベースのシステムでは、/etc/adjtime というファイルでハードウェアクロックの扱いを管理しています。ここが UTC になっていると、起動時に「内蔵時計はUTCだ」と判断されて9時間ズレる原因になります。
現在の設定を以下のコマンドで書き換えます。
ハードウェアクロックをローカルタイム(JST)ベースで同期させる場合:
sudo hwclock --systohc --localtime
※Windowsとデュアルブートしている場合は、Windows側がデフォルトでローカルタイムを使うため、この設定にしておくのが一番安全です
ハードウェアクロックを世界標準時(UTC)として同期させる場合(Linux単体運用におすすめ):
sudo hwclock --systohc --utc
実行後、現在のハードウェア時計の状態を確認してみましょう。
sudo hwclock --show
ここで表示される時刻が、今の日本の正しい時間になっていれば成功です。
※補足:もし右下の時計が「Conky」の場合
もしデスクトップ右下(あるいは画面右上など)の時計が、システムトレイではなく壁紙に埋め込まれたテキスト(Conky)である場合、Conkyの起動タイミングが早すぎて、システムのタイムゾーンが適用される前にUTCで描画されてしまうケースが稀にあります。
上記の手順を踏んでも再起動後に直らない場合は、一度手動でConkyを再起動してみてください。
killall conky && conky
これで一発で直るようであれば、Conkyの自動起動設定(~/.desktop-session/startup など)に sleep 5 && conky のように数秒のディレイ(待ち時間)を入れることで解決できます。
大変手順が多く、そして長くて申し訳ないですが、ここまでやればまず問題なく正しい時刻表記に直せるかと思われます。
ただ時刻表記を直すというだけの目的のために壮大な手順書のようになってしまいましたが、Linuxというものがどういう動きで時刻を表示しているのかまで解説しながら修復手順を示しましたので、よくご覧になっていただけますと、なにげにLinuxのちょっとした勉強にもなるのではないかなと思われます。
ぜひご自身でLinuxマシンやサーバーを建てられた際には、順に表示も確認しつつこんな作業もされてみてはいかがでしょうか。
本日も長々とお付き合いくださいましてまことにありがとうございました。
またの機会にもどうかよろしくお願いいたします。
こうちゃん