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 サーバやデスクトップの管理者は、ぜひ日常的に活用して正確な時刻を保ちましょう。