sudo date -sでLinuxのシステム時刻を変える

  • Linux

この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。

証明書の期限切れ動作確認とかで、システム時刻を手動でずらしたいことがある。

sudo date -s "2013/02/01 11:34:03"

これでシステムクロックを指定した日時に強制セットできる。

フォーマット

YYYY/MM/DD HH:MM:SSのローカルタイム扱い。dateコマンド自体はもっと柔軟な形式("1 FEB 2013 11:34:03"とか"next thursday"のような相対指定)も食えるらしいが、スクリプトに組み込むならフォーマットを固定した方が事故らない。

sudoが要る理由

時刻変更はシステム全体に影響する操作なので、一般ユーザー権限では実行できない。root権限(sudo)が必須になっている。

確認

変更後は素直にdateだけ叩けば反映されているか見れる。

date

注意点

  • 再起動で戻ることがある: システムクロックとRTC(ハードウェアクロック)は別物で、date -sはシステムクロックしか書き換えない。再起動時はRTCの値で初期化されるため、恒久的に変えたいならsudo hwclock -wでRTCへの書き込みが別途必要(未確認、環境によるかもしれない)。
  • NTPデーモンと競合する: ntpdが動いていると、変更直後に同期が走って元の時刻に戻されることがある。試すときはsudo service ntpd stop(もしくは/etc/init.d/ntpd stop)で一時的に止めておいた方がいい。
  • 副作用: TLS証明書の期限判定、ログのタイムスタンプ、cronのスケジュール、キャッシュのTTL判定などに影響する。テスト目的以外で本番環境で実行するのは避けたほうがいい。