Ubuntuで日付・時刻を変更する方法|GUIとコマンドでわかりやすく解説

Linux

パソコンの時計が間違っていると、いろいろな問題が起きてしまいます。

ファイルの更新日時が正しく記録されなかったり、セキュリティ証明書のエラーが出たりすることがあります。

でも、「Ubuntuで時計を合わせるにはどうすればいいの?」と困っている方も多いのではないでしょうか。

この記事では、Ubuntuで日付・時刻を変更する方法を紹介します。

スポンサーリンク

時刻設定の基本知識

まず、Ubuntuでの時刻管理の仕組みを理解しましょう。

システム時刻とハードウェア時刻

Ubuntuには2つの時計があります:

システム時刻(System Clock)

  • Ubuntuが内部で管理している時刻
  • アプリケーションが参照する時刻
  • メモリ上で動作し、電源を切ると消える

ハードウェア時刻(Hardware Clock/RTC)

  • マザーボード上の時計チップが管理
  • 電源を切っても動き続ける
  • BIOS/UEFIの時刻と同じ

通常、Ubuntuはシステム起動時にハードウェア時刻を読み取って、システム時刻を設定します。

UTC vs ローカル時刻

UTC(協定世界時)

  • 世界標準の時刻
  • タイムゾーンの影響を受けない
  • サーバーで推奨される設定

ローカル時刻

  • 地域の時刻(日本では JST)
  • 人間が理解しやすい
  • デスクトップで使われることが多い

NTP(ネットワーク時刻同期)

NTPとは? Network Time Protocol の略で、インターネット経由で正確な時刻を取得する仕組みです。

メリット

  • 常に正確な時刻を保てる
  • 手動での調整が不要
  • 複数のコンピューター間で時刻が統一される

現在の日付・時刻を確認する

時刻を変更する前に、現在の設定を確認しましょう。

基本的な確認コマンド

dateコマンド

date

実行結果の例

2025年  6月 24日 月曜日 14:35:10 JST

別の表示形式で確認

# 英語表記で表示
LANG=C date

# ISO 8601形式で表示
date -I

# 詳細なタイムスタンプ
date "+%Y-%m-%d %H:%M:%S %Z"

timedatectlコマンドで詳細確認

timedatectl status

実行結果の例

               Local time: 月 2025-06-24 14:35:10 JST
           Universal time: 月 2025-06-24 05:35:10 UTC
                 RTC time: 月 2025-06-24 05:35:10
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

各項目の意味

  • Local time:現地時刻
  • Universal time:UTC時刻
  • RTC time:ハードウェア時刻
  • Time zone:設定されているタイムゾーン
  • NTP service:自動時刻同期の状態

ハードウェア時刻の確認

# ハードウェア時刻を表示
sudo hwclock --show

# ハードウェア時刻とシステム時刻の比較
sudo hwclock --compare

タイムゾーンの確認

# 現在のタイムゾーン
timedatectl show-timezones | grep Asia/Tokyo

# 利用可能なタイムゾーン一覧
timedatectl list-timezones | grep Asia

画面操作(GUI)で日付・時刻を設定する

Ubuntu初心者の方には、マウス操作での設定がおすすめです。

GNOME デスクトップでの設定

Step 1: 設定画面を開く

  1. 画面右上の設定アイコンをクリック
  2. 「設定」を選択
  3. 左側のメニューから「日付と時刻」を選択

Step 2: 自動時刻設定をオフにする

  1. 「自動日時」のスイッチを確認
  2. オンになっている場合は、クリックしてオフにする
  3. 管理者パスワードの入力を求められる場合があります

Step 3: 日付を手動設定

  1. 「日付」の項目をクリック
  2. カレンダーが表示されるので、正しい日付を選択
  3. 「選択」または「適用」をクリック

Step 4: 時刻を手動設定

  1. 「時刻」の項目をクリック
  2. 時間と分を入力
  3. 必要に応じて秒も設定
  4. 「適用」をクリック

タイムゾーンの変更(GUI)

手順

  1. 設定画面の「日付と時刻」を開く
  2. 「タイムゾーン」をクリック
  3. 世界地図から地域を選択、または検索ボックスを使用
  4. 日本の場合は「Asia/Tokyo」を選択

12時間表示と24時間表示の切り替え

設定方法

  1. 設定画面で「地域と言語」を選択
  2. 「形式」タブを開く
  3. 「時刻」の形式を選択
    • 24時間表示:14:35
    • 12時間表示:2:35 PM

コマンドラインで日付・時刻を設定する

サーバー環境やリモート操作では、コマンドでの設定が便利です。

dateコマンドによる設定

基本的な設定方法

# 年月日と時分秒を同時に設定
sudo date -s "2025-06-24 15:30:00"

# 月日時分の形式で設定
sudo date -s "062415302025"  # MMDDhhmmYYYY

# 日付のみ設定
sudo date -s "2025-06-24"

# 時刻のみ設定
sudo date -s "15:30:00"

相対的な時刻設定

# 現在時刻から5分進める
sudo date -s "+5 minutes"

# 現在時刻から1時間戻す
sudo date -s "-1 hour"

# 現在時刻から1日進める
sudo date -s "+1 day"

timedatectlコマンドによる設定

timedatectlは、systemdの時刻管理ツールで、より高機能です。

日付の設定

# 日付を設定
sudo timedatectl set-time "2025-06-24"

# 時刻を設定
sudo timedatectl set-time "15:30:00"

# 日付と時刻を同時に設定
sudo timedatectl set-time "2025-06-24 15:30:00"

その他の設定

# タイムゾーンを設定
sudo timedatectl set-timezone Asia/Tokyo

# NTPの有効化/無効化
sudo timedatectl set-ntp true   # 有効化
sudo timedatectl set-ntp false  # 無効化

# ハードウェア時刻をローカル時刻に設定(通常は推奨しない)
sudo timedatectl set-local-rtc true

ハードウェア時刻の設定

システム時刻をハードウェア時刻に同期

# システム時刻をハードウェア時刻にコピー
sudo hwclock --systohc

# UTCでハードウェア時刻を設定
sudo hwclock --systohc --utc

# ローカル時刻でハードウェア時刻を設定
sudo hwclock --systohc --localtime

ハードウェア時刻をシステム時刻に同期

# ハードウェア時刻をシステム時刻にコピー
sudo hwclock --hctosys

ハードウェア時刻を直接設定

# ハードウェア時刻を直接設定
sudo hwclock --set --date="2025-06-24 15:30:00"

自動時刻同期(NTP)の設定

正確な時刻を保つために、NTPを使った自動同期を設定しましょう。

NTPの状態確認

# NTPサービスの状態確認
timedatectl status

# systemd-timesyncdの状態確認
systemctl status systemd-timesyncd

# 詳細な同期状況
timedatectl show-timesync --all

NTPの有効化・無効化

# NTPを有効化
sudo timedatectl set-ntp true

# NTPを無効化
sudo timedatectl set-ntp false

# サービスの手動開始
sudo systemctl start systemd-timesyncd

# サービスの手動停止
sudo systemctl stop systemd-timesyncd

NTPサーバーの設定

systemd-timesyncdの設定

# 設定ファイルを編集
sudo nano /etc/systemd/timesyncd.conf

設定例

[Time]
NTP=ntp.nict.jp time.google.com
FallbackNTP=pool.ntp.org
#RootDistanceMaxSec=5
#PollIntervalMinSec=32
#PollIntervalMaxSec=2048

日本でよく使われるNTPサーバー

  • ntp.nict.jp(情報通信研究機構)
  • time.google.com(Google)
  • pool.ntp.org(NTP Pool Project)

設定の反映

# 設定を再読み込み
sudo systemctl restart systemd-timesyncd

# 手動で同期実行
sudo systemctl restart systemd-timesyncd.service

chronydを使った高精度時刻同期

より高精度な時刻同期が必要な場合は、chronydを使用できます。

chronydのインストール

# systemd-timesyncdを停止
sudo systemctl stop systemd-timesyncd
sudo systemctl disable systemd-timesyncd

# chronydをインストール
sudo apt update
sudo apt install chrony

# chronydを開始
sudo systemctl start chronyd
sudo systemctl enable chronyd

chronydの設定

# 設定ファイルを編集
sudo nano /etc/chrony/chrony.conf

設定例

# NTPサーバーの指定
server ntp.nict.jp iburst
server time1.google.com iburst
server time2.google.com iburst

# 他の設定
driftfile /var/lib/chrony/chrony.drift
makestep 1.0 3
rtcsync

chronydの状態確認

# 同期状況の確認
sudo chronyc tracking

# NTPサーバーの状態確認
sudo chronyc sources

# 詳細な統計情報
sudo chronyc sourcestats

タイムゾーンの管理

正しいタイムゾーンの設定は、時刻表示や各種アプリケーションの動作に重要です。

タイムゾーンの確認と変更

現在のタイムゾーン確認

# 現在のタイムゾーン
timedatectl | grep "Time zone"

# タイムゾーンファイルの確認
ls -la /etc/localtime

# 環境変数での確認
echo $TZ

利用可能なタイムゾーン一覧

# 全世界のタイムゾーン
timedatectl list-timezones

# アジア地域のタイムゾーン
timedatectl list-timezones | grep Asia

# 日本関連のタイムゾーン
timedatectl list-timezones | grep -i japan

タイムゾーンの変更

# 日本標準時に設定
sudo timedatectl set-timezone Asia/Tokyo

# 手動でシンボリックリンクを作成(推奨しない)
sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

一時的なタイムゾーン変更

# 現在のセッションのみ変更
export TZ=America/New_York
date

# コマンド実行時のみ変更
TZ=Europe/London date

複数タイムゾーンの時刻表示

# 異なるタイムゾーンでの時刻表示
TZ=Asia/Tokyo date
TZ=America/New_York date
TZ=Europe/London date

# 世界時計を表示するスクリプト例
#!/bin/bash
echo "東京:    $(TZ=Asia/Tokyo date)"
echo "ニューヨーク: $(TZ=America/New_York date)"
echo "ロンドン:  $(TZ=Europe/London date)"
echo "UTC:     $(TZ=UTC date)"

時刻設定のスクリプト化

定期的な時刻調整や、複数の環境での一括設定をスクリプト化できます。

自動時刻調整スクリプト

基本的な調整スクリプト

#!/bin/bash
# time_sync.sh - 時刻同期スクリプト

echo "現在の時刻: $(date)"

# NTPサービスの状態確認
if systemctl is-active --quiet systemd-timesyncd; then
    echo "NTP同期サービスは動作中です"
    
    # 手動で同期を実行
    sudo systemctl restart systemd-timesyncd
    sleep 2
    
    echo "同期後の時刻: $(date)"
else
    echo "NTP同期サービスが動作していません"
    echo "手動で時刻を確認してください"
fi

ログ付きの時刻調整

#!/bin/bash
# time_sync_with_log.sh

LOG_FILE="/var/log/time_sync.log"
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")

# ログ関数
log_message() {
    echo "[$TIMESTAMP] $1" | sudo tee -a $LOG_FILE
}

# 同期前の時刻をログに記録
log_message "同期開始 - 現在時刻: $(date)"

# NTP同期実行
if sudo timedatectl set-ntp true; then
    log_message "NTP同期を有効化しました"
else
    log_message "エラー: NTP同期の有効化に失敗"
    exit 1
fi

# 結果確認
sleep 5
NEW_TIME=$(date)
log_message "同期完了 - 新しい時刻: $NEW_TIME"

# 同期状況の確認
SYNC_STATUS=$(timedatectl status | grep "synchronized")
log_message "同期状況: $SYNC_STATUS"

設定バックアップと復元

現在の時刻設定をバックアップ

#!/bin/bash
# backup_time_settings.sh

BACKUP_DIR="/backup/time_settings"
DATE_STAMP=$(date +%Y%m%d_%H%M%S)

# バックアップディレクトリ作成
sudo mkdir -p $BACKUP_DIR

# 設定ファイルをバックアップ
sudo cp /etc/systemd/timesyncd.conf $BACKUP_DIR/timesyncd.conf.$DATE_STAMP
sudo cp /etc/localtime $BACKUP_DIR/localtime.$DATE_STAMP

# 現在の設定を記録
timedatectl status > $BACKUP_DIR/timedatectl_status.$DATE_STAMP
date > $BACKUP_DIR/current_date.$DATE_STAMP

echo "時刻設定をバックアップしました: $BACKUP_DIR"

よくある問題と解決方法

時刻設定でよく遭遇する問題と、その解決方法を説明します。

問題1: 手動で時刻を設定できない

症状

  • date -sコマンドでエラーが出る
  • GUIで時刻変更ができない

原因と解決方法

原因1: NTPが有効になっている

# NTPの状態確認
timedatectl status | grep "NTP service"

# NTPを無効化
sudo timedatectl set-ntp false

# 手動で時刻設定
sudo timedatectl set-time "2025-06-24 15:30:00"

原因2: 権限不足

# sudoを使って実行
sudo date -s "2025-06-24 15:30:00"

# ユーザーがsudoグループに属しているか確認
groups $USER

原因3: systemd-timesyncdが動作中

# サービスの状態確認
systemctl status systemd-timesyncd

# 一時的に停止
sudo systemctl stop systemd-timesyncd

# 時刻設定後に再開
sudo systemctl start systemd-timesyncd

問題2: 時刻がずれ続ける

症状

  • 定期的に時刻がずれる
  • 再起動すると時刻が戻ってしまう

原因と解決方法

原因1: ハードウェア時刻が正しくない

# システム時刻をハードウェア時刻に同期
sudo hwclock --systohc

# ハードウェア時刻の確認
sudo hwclock --show

原因2: NTPサーバーに接続できない

# NTPサーバーへの接続確認
sudo chronyc sources

# 代替NTPサーバーを設定
sudo nano /etc/systemd/timesyncd.conf

原因3: 時計回路の問題

# CMOS電池の確認(ハードウェア的な問題)
# この場合は物理的な交換が必要

# 一時的な対処として頻繁な同期設定
# cronで定期的に時刻同期を実行
echo "*/5 * * * * root /usr/bin/timedatectl set-ntp true" | sudo tee -a /etc/crontab

問題3: タイムゾーンが正しく表示されない

症状

  • 時刻は正しいが、タイムゾーンが違う
  • 日本時間で設定したのにUTCで表示される

解決方法

# 現在のタイムゾーン確認
timedatectl status

# 正しいタイムゾーンに設定
sudo timedatectl set-timezone Asia/Tokyo

# 環境変数の確認
echo $TZ

# 必要に応じて環境変数を設定
export TZ=Asia/Tokyo
echo 'export TZ=Asia/Tokyo' >> ~/.bashrc

問題4: デュアルブート時の時刻問題

症状

  • WindowsとUbuntuを切り替えると時刻がずれる

原因

  • Windowsはハードウェア時刻をローカル時刻として扱う
  • Ubuntuはハードウェア時刻をUTCとして扱う

解決方法

方法1: Ubuntuをローカル時刻に合わせる

# Ubuntuでハードウェア時刻をローカル時刻として扱う
sudo timedatectl set-local-rtc 1

方法2: Windowsをに合わせる(推奨)

Windowsのレジストリを編集して、UTCを使用するよう設定:

# Windowsで以下のレジストリキーを作成
# HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
# 名前: RealTimeIsUniversal
# 種類: DWORD
# 値: 1

時刻の監視とログ

システムの時刻を継続的に監視し、問題を早期発見する方法を説明します。

時刻同期のログ確認

# systemd-timesyncdのログ確認
journalctl -u systemd-timesyncd

# 最新のログのみ表示
journalctl -u systemd-timesyncd -n 20

# リアルタイムでログを監視
journalctl -u systemd-timesyncd -f

時刻ずれの監視スクリプト

#!/bin/bash
# time_monitor.sh - 時刻監視スクリプト

LOG_FILE="/var/log/time_monitor.log"
THRESHOLD=5  # 許容する時刻ずれ(秒)

# NTPサーバーから正確な時刻を取得
ACCURATE_TIME=$(ntpdate -q pool.ntp.org 2>/dev/null | tail -1 | awk '{print $6}')
SYSTEM_TIME=$(date +%s)

# 時刻ずれを計算
TIME_DIFF=$((SYSTEM_TIME - ACCURATE_TIME))
ABS_DIFF=${TIME_DIFF#-}  # 絶対値

# ログ記録
echo "$(date): System time: $SYSTEM_TIME, Accurate time: $ACCURATE_TIME, Difference: $TIME_DIFF seconds" >> $LOG_FILE

# 閾値を超えた場合の処理
if [ $ABS_DIFF -gt $THRESHOLD ]; then
    echo "$(date): WARNING: Time difference exceeds threshold ($THRESHOLD seconds)" >> $LOG_FILE
    
    # アラート送信やNTP同期実行
    sudo timedatectl set-ntp true
fi

パフォーマンスへの影響確認

# 時刻同期のパフォーマンス確認
systemd-analyze blame | grep timesyncd

# システム全体の時刻関連サービス確認
systemctl list-units --type=service | grep -i time

まとめ

この記事を通じて、Ubuntuでの日付・時刻設定について詳しく学ぶことができたと思います。

重要なポイントの振り返り

基本的な確認方法

  • 現在の日時確認:dateコマンド
  • 詳細な状態確認:timedatectl status
  • ハードウェア時刻確認:sudo hwclock --show

手動設定の方法

  • GUI操作:設定→日付と時刻で手動設定
  • コマンド操作:sudo timedatectl set-time
  • 注意点:NTPを無効化してから手動設定

自動時刻同期

  • NTP有効化:sudo timedatectl set-ntp true
  • 設定ファイル:/etc/systemd/timesyncd.conf
  • 高精度同期:chronydの使用

タイムゾーン管理

  • 確認:timedatectl list-timezones
  • 変更:sudo timedatectl set-timezone Asia/Tokyo
  • 日本時間設定が基本

よくある問題の対処

  • 手動設定できない:NTPを無効化
  • 時刻がずれる:ハードウェア時刻の同期
  • デュアルブート問題:UTC/ローカル時刻の統一

コメント

タイトルとURLをコピーしました