1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Linux 時刻

Last updated at Posted at 2025-05-11

はじめに

Linux には ハードウェアクロックシステムクロック の 2 種類の時計が存在する。

OS は主にシステムクロックを扱っている。

ハードウェアクロック(RTC)

マザーボード上に内蔵された物理的な時計。RTC(Real Time Clock)とも呼ばれる。

PC 電源が OFF された後もボタン電池により動作し続ける。

ハードウェアクロックは、BIOSUEFI の画面で表示される。OS とは独立しているため、マシン上に Linux 以外の OS(Windowsなど)がインストールされている場合にも、各種 OS ハードウェアクロックを共有する。

$ hwclock

ハードウェアクロックを表示する
$ hwclock -r
ハードウェアクロックをシステムクロックに同期させる(hardware clock to system clock)
$ hwclock --hctosys
システムクロックをハードウェアクロックに同期させる(system clock to hardware clock)
$ hwclock --systohc

システムクロック

Linux(OS) が起動後、内部(カーネル)的に保持され、存在するソフトウェアの時計。

Linux 起動時にハードウェアクロックを参照することによって初期化され、その後、ハードウェアクロックとは独立して動き続ける。ただし、起動後に NTP などでネットワーク上のサーバと同期して調整されることがある。

カーネルが管理していて、Linux 上で動作する各種アプリ、ログ、ファイルのタイムスタンプで使用される。

PC 電源を OFF した後、時刻は保持されない。

$ date コマンドで表示されるのは、このシステムクロックの時刻。

$ date

システムクロックを表示する
$ date

書式を指定して表示したい場合、書式指定文字列の先頭に + を入力する。

書式を指定して表示する
$ date "+時刻指定文字列"
例(2025年5月11日)
$ date "+%Y%m%d"
20250511
書式指定文字列 説明
%Y
%m
%d
%H
%M
%a 曜日
%b 月の名前
システムクロックを設定する
$ date MMDDhhmmYY   # MM:月、DD:日、hh:時、mm:分、YY:西暦
$ date MMDDhhmmCC.ss   # CC:西暦の下2桁、ss:秒

設定したシステムクロックは電源 OFF によって消滅する。

NTP

ntpd は NTP クライアントとしても NTP サーバとしても機能する NTP デーモン(サービス)。

多くの一般的な PC やサーバは、クライアントとして ntpd を使用することが多い。

NTP については こちら

$ ntpdate

指定した NTP サーバから時刻を取得する。

NTP サーバから時刻を取得して、システムクロックを補正する
$ ntpdate NTPサーバ名
NTP サーバから時刻を取得する(補正はせずに、システムクロックとの差分だけ確認する(query))
$ ntpdate -q NTPサーバ名

/etc/ntp.conf

ntpd デーモンの設定ファイル。

設定項目がそのままコマンド名になっている。

/etc/ntp.conf
設定用コマンド 引数
/etc/ntp.conf(例)
driftfile ...
restrict ...   # 自身が NTP サーバとして機能している
server ...   # 自身が NTP クライアントとして機能している

ハードウェアクロックとシステムクロックの違い

比較対象 ハードウェアクロック システムクロック
管理 マザーボード カーネル
電源 OFF 時 稼働し続ける 停止する
初期設定 BIOS / UEFI 起動時にハードウェアクロックをコピー
用途 OS 起動時のシステムクロック初期化 日常的に使用
時刻調整 $ hwclock NTP
表示方法 $ hwclock $ date

$ timedatectl

clock time, calender date, control

時刻やタイムゾーンを管理するためのコマンド。systemd を採用している Linux ディストリビューションで使用される。

$ hwclock$ date よりも高レベルな操作が可能。

基本構文
$ timedatectl サブコマンド
現在の時刻、ハードウェアクロック、タイムゾーンなどを表示する
$ timedatectl
$ timedatectl status
タイムゾーンを一覧表示する
$ timedatectl list-timezones
タイムゾーンを設定する
$ sudo timedatectl set-timezone タイムゾーン   # Asia/Tokyo など
システムクロックの時刻・日付設定
$ sudo timedatectl set-time "HH:MM:SS"
$ sudo timedatectl set-time "YYYY-MM-DD HH:MM:SS"
$ sudo timedatectl set-time "YYYY-MM-DD"

時刻設定は NTP が有効化されている場合、コマンドが失敗する。

NTP を有効化する
$ timedatectl set-ntp yes
NTP を無効化する
$ timedatectl set-ntp no

Chrony

クロニー

従来の ntpd に代わる、新しい軽量かつ高精度な NTP 実装。現在では ntpd よりも chrony の使用が推奨されている。

chrony は、プロジェクト名でもあり、コマンド名でもある。

  • サーバ
    • chronyd デーモン
    • NTP サーバとして機能する
  • クライアント
    • $ chronyc コマンド
    • chronyd デーモンの管理を行う

/etc/chrony.conf

chronyd デーモンの設定ファイル。

設定項目がそのままコマンド名になっている。

/etc/chrony.conf
設定用コマンド 引数

設定変更後は $ systemctlchronyd デーモンを再起動する。

chronyd デーモンを再起動する
$ sudo systemctl restart chronyd

$ chronyc

chronyd デーモンと対話するための NTP クライアント側のコマンド。

基本構文
$ chronyc サブコマンド
使用中の NTP サーバーとその状態を表示する
$ chronyc sources
現在の同期状態を表示する
$ chronyc tracking
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?