解説
Linuxのシステム時間を変更したい。
通常はntpを使用して自動的に時刻合わせをすればよいのだが、ポートが閉じている、ネットワークにつながっていないなど何らかの理由でntpが使用できない場合は、117の時報を聞きながら標準でインストールされている「date」コマンドを用いて、マニュアルで設定を行うことができる。
dateコマンドで日付の設定を行うには次のようにする。なおシステムそのものの設定を変更するため、実行にはroot権限が必要になる。
katsube@shana $ date 022711082007.55 2007年 2月 27日 火曜日 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" 2007年 2月 27日 火曜日 11:18:01 JST
ちなみに、dateコマンドは現在日付の表示機能はもちろん、例えば3日後の日付を表示といった演算機能や、柔軟なフォーマットで表示できたりと豊富な機能を持ち合わせている。