So-net無料ブログ作成
検索選択

計画停電とLinux [小技(Linux)]

 まずは、遅ればせながら東北関東大震災で被災された皆様には心よりお見舞い申し上げます。

 さて、現在東京電力エリア内では「計画停電」真っ盛りですが、計画停電の時間が始まるまでにはなんとかしてサーバを自動でシャットダウンしたいものです。
 そこで、その方法を紹介します。

 atコマンドを使います。

 と、その前に、まずは「atd」が起動していることを確認しましょう。
[root@haruka ~]# ps -ef | fgrep atd
root      1157 16571  0 11:14 pts/5    00:00:00 fgrep atd
rpcuser   2667     1  0 Jan08 ?        00:00:00 rpc.statd
root      2870     1  0 Jan08 ?        00:00:00 /usr/sbin/atd


 3行目の「/usr/sbin/atd」がソレです。起動していない場合は、 service atd start なりしておきましょう。自動起動の設定なら chkconfig atd on です。

 そして、計画停電が6:20から開始される場合なら、5分前にシャットダウンしておくとすると

 at 6:15

 とか実行します。すると…
[root@haruka ~]# at 6:15
at>

 とかプロンプトが表示されますので、ここにシャットダウンコマンドを記述します。
[root@haruka ~]# at 6:15
at> shutdown -h now

 ↑まずはこんな感じ。そして、Enterキーを忘れずに押しておきましょう。2行目のプロンプトが表示されます。
[root@haruka ~]# at 6:15
at> shutdown -h now
at>

 ↑こうなる。そしたら、「Ctrl + D」でプロンプトを抜けます。
[root@haruka ~]# at 6:15
at> shutdown -h now
at>
job 1 at 2011-03-24 06:15


 というように、「ジョブID」とそのジョブが実行される正確な日時が表示されます。

 ちなみに、atコマンドに指定した時刻が…
① まだ到来していない場合
 (例)atコマンドを入力した時間が12:00で、atコマンドの引数に指定した時間が18:00だった場合
 →その日の18:00に実行されます

② もう過ぎちゃった場合
 (例) (例)atコマンドを入力した時間が12:00で、atコマンドの引数に指定した時間が06:00だった場合
 →次の日の06:00に実行されます

 ちゃんとatコマンドによるジョブが登録されたかどうか確認したい場合は、「atq」コマンドで確認できます。
[root@haruka ~]# atq
3       2011-03-24 06:15 a root
[root@haruka ~]# date
2011年  3月 23日 水曜日 11:25:23 JST

 atqコマンドで表示されているのは、ジョブIDが「3」で、そのジョブは2011-03-24の06:20に実行されることがわかります。

 ジョブの詳細が知りたい場合は、「at -c」で見ることが出来ます。-cオプションに続けてジョブIDを指定します。
[root@haruka ~]# at -c 3
#!/bin/sh
# atrun uid=0 gid=0
# mail     root 0
umask 22
HOSTNAME=haruka.mycompany.com; export HOSTNAME
SHELL=/bin/bash; export SHELL

(途中省略)

shutdown -h now

[root@haruka ~]#

 環境変数の設定が自動的に行われるので、最初びっくりするかもしれませんが、最後のほうに「shutdown -h now」がちゃんと追加されていることがわかります。

 「間違えて登録しちゃった!」という場合、ジョブを削除するのは「atrm」コマンド。ジョブIDを続けて指定するとそのジョブが削除されます。
[root@haruka ~]# atrm 3
[root@haruka ~]# atq

 ↑こんな具合。

 あとは時間が来ればサーバがシャットダウンされます。

 ところで、東京電力が公表している計画停電の予定に併せて、今日・明日の分だけでなくもっと先の予定まで登録しておきたい!という場合にも対応できます。

 いちいちatコマンドでshutodownと書くのは面倒くさいので、まず最初に実行したいコマンドを記述したファイルを作成しておきます。例えばこんな具合。

 echo "shutdown -h now" > /tmp/command.txt

 atコマンドに「-f」オプションを追加ます。
 先ほど紹介したときに時刻だけを記述した項目には日付も同時に指定することができます。
 例えば、2011年3月31日の6:15にサーバをシャットダウンしたいなら、

 at -f /tmp/command.txt 06:15 03/31/2011

 と、時間と日付を指定すればOK。
 なお、日付のところに「tomorrow」と書けば、「明日の」6:15に実行されるし、「今から1時間後」という指定も可能で、

 at -f /tmp/command.txt now + 1 hour

 と指定すればよい。他にも便利で楽しい日時の指定方法があるが、紹介してると終わらなくなるので(笑)基本的なものだけ紹介した。
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

メッセージを送る