/usr/bin/*ctl なプログラムが何をするのかを試してみました(timedatectl)
By ribbon @
2022-12-12 00:49
この記事は openSUSE Advent Calendar 2022 の12日目です。
systemd が使われるようになると、daemon の制御とかのやり方は大きく変わりました。/etc/init.d にあるスクリプトから、systemd パッケージに含まれるコマンドを使うようになってきました。それらのコマンドは、xxxxxctl という、末尾に ctl が含まれるものが多いように感じました。そこで、/usr/bin/ の中にある、末尾が ctl なプログラムがどんなものかを簡単に調べて見ることにしました。
今回は、timedatectl を紹介します。
コマンド名: timedatectl
パッケージ: systemd-249.11-150400.6.8.x86_64
動作: ○
詳細:
timedatectl は、システム時刻の表示/変更を行うコマンドです。引数なしで起動すると以下のような形で日付と時刻を表示します。また、引数 show を指定すると、機械で処理しやすい形で表示します。
% timedatectl
Local time: 日 2022-12-11 14:27:55 JST
Universal time: 日 2022-12-11 05:27:55 UTC
RTC time: 日 2022-12-11 05:27:55
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
% timedatectl show
Timezone=Asia/Tokyo
LocalRTC=no
CanNTP=yes
NTP=yes
NTPSynchronized=yes
TimeUSec=Sun 2022-12-11 14:30:45 JST
RTCTimeUSec=Sun 2022-12-11 14:30:45 JST
日付の変更もできます。但し、NTP が動作している場合は、一旦 NTP の同期を止めてからでないと変更ができません。ここは date コマンドと違うところです。
# timedatectl set-time "2022-12-11 15:40:00"
Failed to set time: Automatic time synchronization is enabled
# timedatectl set-ntp no
# timedatectl set-time "2022-12-11 15:40:00"
# timedatectl
Local time: Sun 2022-12-11 15:40:07 JST
Universal time: Sun 2022-12-11 06:40:07 UTC
RTC time: Sun 2022-12-11 06:40:07
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: no
NTP service: inactive
RTC in local TZ: no
日付や時刻の変更は、時刻同期機能を入れておけば使う事は少ないと思いますが、date コマンドよりは情報量が多いので、場合によっては便利かもしれません。