Linuxで時刻の表示と変更をコマンドで行う!(timedatectl)

Linuxでtimedatectlコマンドで、時刻の確認と設定変更を行います。

timedatectlのヘルプを確認する!

timedatectlコマンドのヘルプを表示して使用方法を確認します。

$ timedatectl --help
timedatectl [OPTIONS...] COMMAND ...

Query or change system time and date settings.

Commands:
  status                   Show current time settings
  show                     Show properties of systemd-timedated
  set-time TIME            Set system time
  set-timezone ZONE        Set system time zone
  list-timezones           Show known time zones
  set-local-rtc BOOL       Control whether RTC is in local time
  set-ntp BOOL             Enable or disable network time synchronization

systemd-timesyncd Commands:
  timesync-status          Show status of systemd-timesyncd
  show-timesync            Show properties of systemd-timesyncd

Options:
  -h --help                Show this help message
     --version             Show package version
     --no-pager            Do not pipe output into a pager
     --no-ask-password     Do not prompt for password
  -H --host=[USER@]HOST    Operate on remote host
  -M --machine=CONTAINER   Operate on local container
     --adjust-system-clock Adjust system clock when changing local RTC mode
     --monitor             Monitor status of systemd-timesyncd
  -p --property=NAME       Show only properties by this name
  -a --all                 Show all properties, including empty ones
     --value               When showing properties, only print the value

See the timedatectl(1) man page for details.

現在の時刻を表示する!

timedatectlコマンドで現在の時刻を表示します。「timedatectl status」と同じ結果になります。

$ timedatectl
               Local time: Thu 2023-01-12 07:03:10 JST
           Universal time: Wed 2023-01-11 22:03:10 UTC
                 RTC time: Wed 2023-01-11 22:03:10
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

showオプションを指定すると、シェルで使用しやすいフォーマットで表示することができます。

$ timedatectl show
Timezone=Asia/Tokyo
LocalRTC=no
CanNTP=yes
NTP=yes
NTPSynchronized=yes
TimeUSec=Thu 2023-01-12 07:09:55 JST
RTCTimeUSec=Thu 2023-01-12 07:09:55 JST

時刻を設定しようとしてみる!

時刻同期をしている場合は、コマンドから設定できません。

$ sudo timedatectl set-time "2023-01-12 08:09:49 JST"
Failed to set time: Automatic time synchronization is enabled

リアルタイムクロックをローカル時間扱いに設定してみる!

Windowsのようにリアルタイムクロックをローカル時間扱いに設定してみます。

$ sudo timedatectl set-local-rtc 1
usradmin@dpc001p1:~$ sudo timedatectl 
               Local time: Thu 2023-01-12 20:36:11 JST
           Universal time: Thu 2023-01-12 11:36:11 UTC
                 RTC time: Thu 2023-01-12 20:36:11
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: yes

Warning: The system is configured to read the RTC time in the local time zone.
         This mode cannot be fully supported. It will create various problems
         with time zone changes and daylight saving time adjustments. The RTC
         time is never updated, it relies on external facilities to maintain it.
         If at all possible, use RTC in UTC by calling
         'timedatectl set-local-rtc 0'.

timedatectlコマンドで確認すると、おすすめでない旨のメッセージが表示されます。すぐ戻しましょう。

タイムゾーンを変更する!

変更可能なタイムゾーンを表示します。

$ timedatectl list-timezones 
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
...

タイムゾーンを変更します。

$ sudo timedatectl set-timezone Africa/Abidjan
usradmin@dpc001p1:~$ timedatectl
               Local time: Thu 2023-01-12 11:43:57 GMT
           Universal time: Thu 2023-01-12 11:43:57 UTC
                 RTC time: Thu 2023-01-12 11:43:57
                Time zone: Africa/Abidjan (GMT, +0000)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

RHEL系は、「/etc/localtime」のリンク先が変更になります。

$ sudo ls -l /etc/localtime
lrwxrwxrwx. 1 root root 36 Jan 12 11:46 /etc/localtime -> ../usr/share/zoneinfo/Africa/Abidjan

Debian系は、「/etc/timezone」ファイルの内容が変更されます。

$ cat /etc/timezone 
Africa/Abidjan

timedatectlコマンドを使用するとLinuxのディストリビューションの差異を吸収することもできます。

おわりに

timedatectlコマンドでは、時刻周りの設定を一括して変更できるようになっています。dateコマンドの代わりに使用するのもよいと思います。

関連記事

関連書籍(Amazon)

N/A