NTPが使えないので時計を好き勝手に1秒進める/戻す

ntpdには、stepモードとslewモードというのがある。stepモードは一発あわせ、slewモードはちょっとづつあわせ。
時間にシビアなデータベースサーバや、神経質な管理者が見ているサーバでntpdを動作させる場合にはslewモードを使うことが多い。ntpd -x だったかな。
しかしながら、ntpdというヤツは時間があまりにもズレているとあわせてくれないんです。10分ぐらいズレてるともうダメ。かといっていきなり10分早めたりはしたくないので、slewモードは使いたい。
そんな時に使って下さい、以下。

# LANG=C
# date -s "`date --date '1 second'`"
  • date --date '1 second' は1秒後の時間を出すコマンド。
  • date -s "時間" は、指定した時間に合わせるコマンド。

つまり、上のコマンド1行で必ず1秒時計が進むのですよ。
インチキ臭いけど、便利。

(追記: LANG=ja_JP.eucJPでやると結果が違ったので注意)