OSの時計時刻を変更したい - Linux

解説

Linuxのシステム時間を変更したい。

通常はntpを使用して自動的に時刻合わせをすればよいのだが、ポートが閉じている、ネットワークにつながっていないなど何らかの理由でntpが使用できない場合は、117の時報を聞きながら標準でインストールされている「date」コマンドを用いて、マニュアルで設定を行うことができる。

dateコマンドで日付の設定を行うには次のようにする。なおシステムそのものの設定を変更するため、実行にはroot権限が必要になる。

katsube@shana $ date 022711082007.55
2007227日 火曜日 11:08:55 JST

日本人の感覚から言うとちょっとわかりづらい書式になっている。ルールは以下の通り。

date [ MMDDhhmm [ [ CC ] YY ] [ .ss ] ]

それぞれの意味は次のようになる(manより抜粋)

  • MM   月
  • DD   日 (月内通算)
  • hh   時
  • mm   分
  • CC   年の最初の 2 桁 (省略可)
  • YY   年の最後の 2 桁 (省略可)
  • ss   秒 (省略可)

これではわかりづらいし覚えられない。毎回manやヘルプを参照するのも面倒だ。というわけで通常は次のオプションを使用して実行する(manより抜粋)

-d datestr, --date datestr
    現 在 の時刻・日付の代わりに、 datestr で指定された時刻・日付を表示する。
    datestr は普通のフォーマットならだいたいなんでも使うことができる。月名 、
    タイムゾーン、'am' や 'pm' なども用いてよい。

上のオプションを用いると次のように記述できる。環境によっては期待通りに動作しない場合もある。その際は前述のわかりづらい例を用いるか、manやヘルプを参照のこと。

katsube@shana $ date -d "2007/02/27 11:18:01"
2007227日 火曜日 11:18:01 JST

ちなみに、dateコマンドは現在日付の表示機能はもちろん、例えば3日後の日付を表示といった演算機能や、柔軟なフォーマットで表示できたりと豊富な機能を持ち合わせている。