はじめに

datentpdate コマンドを使用して、サーバの時刻を変更する方法をメモとして記載しておく。
特に、指定した時刻で起動するバッチやプログラムがある場合に使用してテストをしているので残す。

環境

1
2
Windows 10 Professional
WSL2(Ubuntu 22.04LTS)

dateコマンドで時刻を変更する

date コマンドを使用して、サーバの時刻を変更する。

例えば、 2023/03/01 9:00:00 にしたい場合は以下のようなコマンドになる。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
## 現在時刻を表示
date

~$ date
Thu May  4 17:03:17 JST 2023

## 時刻を変更する
date -s  "2023/03/01 9:00:00"

$ sudo date -s  "2023/03/01 9:00:00"
Wed Mar  1 09:00:00 JST 2023

~$ date
Wed Mar  1 09:00:01 JST 2023

このように変更できる。
ただし、 基本的には自動的に時刻合わせをしてしまい、すぐにもどってしまう。
その場合には下記で 時刻同期をするデーモンを止めておく必要がある。

1
2
3
4
systemctl status systemd-timesyncd

## systemd-timesyncd を止める
sudo systemctl stop systemd-timesyncd

時刻を元に戻す

1
sudo ntpdate -v ntp.nict.jp

ntpdateがない場合

1
sudo systemctl restart systemd-timesyncd

※ WSL環境だと wsl.exe --shutdown でWSLを止めて、再起動を待つ必要がある (sudo systemctl restart systemd-timesyncd を実行しても再起動に失敗して時刻同期されなかった。)

おわりに

あくまでこの方法はテスト環境や検証ができる環境で行うこと。
時刻系のテストは本当に面倒くさいので、どうにかならないのか…。