timedatectlとは?

—

by

in

timedatectlとは

timedatectlは、Linux の systemd が提供するコマンドラインユーティリティで、システムの日時やタイムゾーン、NTP(ネットワーク時刻同期)の状態を管理・表示します。従来の date コマンドや hwclock とは異なり、systemd-timesyncd や chronyd といったサービスと連携し、統一的なインタフェースで時刻関連の設定を行える点が特徴です。

主な機能

  • 現在のシステム時刻、ローカルタイムと UTC の表示
  • タイムゾーンの確認・変更
  • NTP サービスの有効化・無効化、ステータス確認
  • ハードウェアクロック(RTC)の同期

基本的な使い方

以下に最も頻繁に使用されるサブコマンドを示します。

# 現在の時刻情報を表示
$ timedatectl status

# タイムゾーンを変更(例: Asia/Tokyo)
$ sudo timedatectl set-timezone Asia/Tokyo

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

# 手動で時刻を設定(例: 2024-08-11 12:34:56)
$ sudo timedatectl set-time '2024-08-11 12:34:56'

主要オプションとサブコマンド

  • status:現在の時刻設定と NTP 状態を表示
  • set-timezone ZONE:タイムゾーンを ZONE に変更
  • set-ntp bool:NTP の有効化 (true) / 無効化 (false)
  • set-time TIME:システムクロックを任意の時刻に設定
  • set-local-rtc bool:ハードウェアクロックをローカルタイム(true)か UTC(false)か設定

時刻同期と NTP

systemd は内部で systemd-timesyncd という軽量な NTP クライアントを提供しています。timedatectl set-ntp true とすると、このサービスが自動的に有効化され、インターネット上の NTP サーバーと時刻を同期します。既に別の NTP デーモン(chrony や ntpd)を使用している場合は、競合を防ぐために systemd-timesyncd を無効化することが推奨されます。

トラブルシューティングのポイント

  • サービス状態の確認:
    $ systemctl status systemd-timesyncd
  • ログの確認:
    $ journalctl -u systemd-timesyncd
  • タイムゾーンが正しく反映されない場合は、/etc/localtime のシンボリックリンクが正しいか確認する
  • ハードウェアクロックが UTC かローカルか不一致の場合は、timedatectl set-local-rtc false で統一する

まとめ

timedatectl は、systemd 環境下で時刻管理をシンプルかつ統一的に行える強力なツールです。タイムゾーン変更や NTP の有効化は数行のコマンドで完了し、システム全体の時刻同期を一元管理できます。Linux サーバやデスクトップの管理者は、ぜひ日常的に活用して正確な時刻を保ちましょう。