メイン使用している Windows XP の「メンテナンス」を自動化した。
…いや、いままでも自動化はしていたんだ。
起動中に、時間が来るとバックアップを開始したり、デフラグを開始したりしていた。
でも、ハードディスクガリガリ動かすと遅くなるからね。
起動中、ということは、大抵は僕の作業中でもあるわけだ。
実質上、Windows は「端末」であり、自宅内サーバー上のファイルをいじる形でプログラムを作成しているので、それほど害は無いと考えていたのだが、それでも遅いことは遅い。
そこで、深夜に作業をするようにした。
…しようとおもった。そしたら、これが大変。
まず、深夜に作業するには、深夜に自動で電源が入らなくてはならない。
僕が使用しているのは、もう数年前の VAIO だが、自動電源オンの機能はある。あるはずだ。だって、テレビの予約録画ができるのだもの。
…でも、この機能にアクセスすることができない。
BIOS 設定では、自動起動時間を設定できない。
おそらく、録画のために「SONY 純正のソフト」からのみ、次回の起動時間を設定できるのだろう。
#複数予約があっても「次回」の起動設定さえできれば、そこで新たな設定を行えるので、設定は1つでよい。
仕方が無いので、Wake On Lan を使うことにした。
幸い、低消費電力のサーバーを 24時間稼動しているので、cron で起動することにする。
BIOS の設定で WOL を Enable にし、Windows のシステムのプロパティ>ハードウェア>デバイスマネージャーからも、ネットーワークアダプタの設定を行う。
BIOS 設定だけでは、WOL は可能だが「どのような条件で」可能にするかを設定していないため、これらは OS 上から行うのだ。
#詳細な仕組みは知らないのだが、BIOS が設定するのは「電源 OFF 時にネットワークカードを活かしておくかどうか」だけで、詳細な設定は OS 側で指示するのだろう。
一度指示すれば、電源を落としても通電されるので、指示が生きている、という仕組み。
#ここでの「条件」は、マジックパケットである。でないと、ping が来ても起動してしまう。
つづいて、サーバー側の設定。僕は CentOS を使用している。
/sbin/ether-wake というツールがあるので、これを使う。
(無い場合は yum install net-tools)
使用方法は、相手の MAC アドレスを入れるだけ。
#MAC アドレスは、Windows 側で調べておく。
コマンドプロンプトで ip-config /all すればでてくる。
Windows を Sleep して、1回実験。
…よし、ちゃんと起動できた。
これで、目的の半分は達成。
cron で、深夜 2 時に起動させるようにしておく。
Windows 側の設定。
先に書いたが、すでに MyDefrag でデフラグを、Paragon Backup でバックアップを行う設定をしてある。
MyDefrag は、Windows のシステムツールにある「タスク」を使用して、定期実行するようにしてある。
これを、深夜2時5分に開始するように変更する。
(5分からにしてあるのは、起動時間を考慮してのこと)
毎週日曜日に実行するようにした。
一番、使っている可能性が低い日なので。
Paragon Backup のほうは、ソフト内から設定変更を行う。
(「タスク」にも登録されているが、これはソフトが設定したもの。ここを変更しても、上書きされてしまう)
スケジュールの「プロパティ」から、時間などをずらすだけ。
頻繁に更新する C: は、火曜日と金曜日に、D: は土曜日にバックアップすることにした。
先ほど書いた crontab をさらに書き換え、火曜日と、金~日だけ実行するようにする。
さて…。
作業終了したら、コンピューターの電源を切ってほしい。
実のところ、この情報を探すのに一番手間取った。
みんな、同じことで悩んでいるらしく、「やり方知りませんか?」という質問ばかり見つかり、答えが見つからない。
なので、ここに結論を書いておこう。
Paragon Backup のほうは簡単。
スクリプトを作成する Wizard のなかで、終了したら ShutDown する、というチェックがあるので入れればよい。
今回、僕はすでにスクリプトを組んでいたので、このスクリプトに手を加えた。
EXIT(value(v_ExitCode))
という行の上に
shutdown
と書けばよい。
これでシャットダウンしてくれる。スリープや休止はしてくれない。
ちょっと不便だけど、週に何回か再起動するのも悪くないだろう。
MyDefrag のほうは、Script フォルダ内にある、Settings.MyD を編集する。
WhenFinished(~)
という行がある。~のところは、デフォルトでは wait になっているはずだ。
wait を exit に変えると、終了後は「実行結果」のウィンドウを出して停止せずに、終了してくれる、というTips は広く知られていて、書き換えている人も多い。
ここを Shutdown にすると、シャットダウンしてくれる。
Sleep ならスリープしてくれるし、Hibernate なら休止する。
というわけで、これで完成。
深夜に時間のかかる面倒な作業を勝手に行って、終わったら即、電源を落としてくれる、はず。
(設定したばかりなので、まだ試験されていない)
翌日追記
よく考えると、上の実行順序はまずかった。
僕の場合、土日はPCを使わないことが多い。
なのに、土曜日にバックアップしてシャットダウン、日曜日にデフラグする設定にしている。
シャットダウンからは、 WOL で起動できない。WOL するなら、スリープか休止でないと。
なので、土日の実行順を逆にすることにした。
土曜日にデフラグして休止、日曜日にバックアップしてシャットダウン。
月曜日に手動で再起動かければ、火曜日のバックアップも問題なし。
(月曜休みの三連休の場合はどうするか?
もう少し練りこんでもよいが、金曜にはバックアップされるので問題ないかな。)
同じテーマの日記(最近の一覧)
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |