節電のために、システムのcronなどでハイバネーション(ハードディスクへのサスペンド)、サーバなどを自動起動などの需要は多いと思われるが、その設定方法と注意点をまとめた。
ハードウェアクロックの時刻合わせ
BIOSの時計(以後ハードウェアクロック)はローカルタイムを使う必要がある。注意点として、OSの時計であるシステムクロックはハードウェアクロックは異なっているので、起動中にもかかわらずシステムクロックを設定したからといってハードウェアクロックに直接反映されるわけではない。またハードウェアクロックはデフォルトではUTC(協定世界時刻)として使うように設定されているため、BIOSので自動起動時刻を日本時間で合わせても、UTC時刻で起動することになってしまう。
ハードウェアクロックをシステムクロックにてローカルタイムとして合わせるには次のコマンドを実行する。hwclock --systohc --localtimeここで
--localtime
はローカルタイムとして時刻を合わせるの意味だが、
マニュアルには一度実行すればその後はオプションを省略してもローカルタイムとして時刻合わせされると書いてある。ただ残念なことに、システムのどこかで再びUTCで時刻合わせを行なってしまうと、今度はその設定にしたがってしまうので、毎度このオプションは指定したほうがよい。システムでは少なくとも下記のファイルを次のように
/etc/sysconfig/clock: ZONE="Asia/Tokyo" UTC=falseとしておく。
BIOSの自動起動
次にBIOSの自動起動の設定を行う。BIOSの自動起動の設定は、OSから行うことはできない。 また使っているPCによりBIOSの設定方法が異なる。よって自身で検索をしてみつけて設定を行う。 次のページには実例がある。 コンピュータの電源を設定時刻に自動的にオンにするcronによる自動終了
自動終了はcronにてsleepを使って行う。具体的な設定は下記の通り。59 23 * * * /sbin/hwclock --systohc --localtime; echo 4 > /proc/acpi/sleep 29 9 * * 0,6 echo 4 > /proc/acpi/sleep上記の場合、夜の11:59分にハードウエアクロックを合わせて、その後終了(sleep)している。 二行目は土日の9時29分に自動終了している。これは利用しない土日にも自動起動してしまうため、それを終了させるためである。
システムクロックの時刻合わせ
上記はシステムクロックが正確である前提であるが、システムクロックの時刻合わせについても触れる。ntpdate
ではなく、ntpd
を使うようにする。
ntpdate
で一気にシステムクロックを合わせると、他のプロセスから見た時間が未来から過去に移動してしまったりする。そうなると時刻を見て動作するプログラムでは想定外の動作となり、問題が発生するためである。
常時起動する方法と、cronで定期的に起動させ時刻完了後終了する方法がある。下記はcronで定期的に行う方法。
30 * * * * ntpd -q参考: ntpdateなんて使ってるんじゃあるまいね