はじめに
date
や ntpdate
コマンドを使用して、サーバの時刻を変更する方法をメモとして記載しておく。
特に、指定した時刻で起動するバッチやプログラムがある場合に使用してテストをしているので残す。
環境
Windows 10 Professional
WSL2(Ubuntu 22.04LTS)
dateコマンドで時刻を変更する
date
コマンドを使用して、サーバの時刻を変更する。
例えば、 2023/03/01 9:00:00 にしたい場合は以下のようなコマンドになる。
## 現在時刻を表示
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
このように変更できる。
ただし、 基本的には自動的に時刻合わせをしてしまい、すぐにもどってしまう。
その場合には下記で 時刻同期をするデーモンを止めておく必要がある。
systemctl status systemd-timesyncd
## systemd-timesyncd を止める
sudo systemctl stop systemd-timesyncd
時刻を元に戻す
sudo ntpdate -v ntp.nict.jp
ntpdateがない場合
sudo systemctl restart systemd-timesyncd
※ WSL環境だと wsl.exe --shutdown
でWSLを止めて、再起動を待つ必要がある (sudo systemctl restart systemd-timesyncd
を実行しても再起動に失敗して時刻同期されなかった。)
おわりに
あくまでこの方法はテスト環境や検証ができる環境で行うこと。
時刻系のテストは本当に面倒くさいので、どうにかならないのか…。