このページは非常時稼動ファイルサーバーとしてのホスト機をネットワークからリモートから停止するための方法についての記録です。
お便利サーバー.com+相互リンクサイト内をキーワードで検索
VAIO Z505でLinuxサーバー

Z505でLinuxサーバー

インストールFTPサーバ構築

FTPサーバからインストール

サーバ機能の入れ替え作業

WakeOnLanの設定

リモートで電源OFF〜その1

リモートで電源OFF〜その2


一般ユーザーから安全・簡単にLinuxOSの電源を切るには

電源ONはWakeOnLanで簡単に行うことができます。起動するホストのMACアドレスとブロードキャストアドレスさえ解っていればOKです。他には何も必要ありません。

一方の電源OFFは通常はOSを正常終了しなければなりませんから、「管理ユーザーアカウントでログオン」→「シャットダウンを実行」という手順を踏むことになります。

がしかし、パソコン音痴の家内や幼稚園児の子供にLinuxの管理ユーザーアカウントでログインさせるのは無謀に等しい行為ですので、ここは別の方法を考えます。

例えばデスクトップサーバー上でApacheを起動し、PHPを利用してブラウザからコントロールする方法などが考えられます。

が、ただ電源を切るだけのためにhttpデーモンを稼動させておくのはなんとなく馬鹿馬鹿しいような気もします。

できれば実際に利用しているデーモンだけで電源オフの仕組みを実現させたいところです。

まあよくよく考えてみれば、使わないときにデスクトップサーバーの電源を切る理由といえば「省エネ」と「騒音対策」くらいのものですから、電源オフの命令後に即シャットダウンしなければならないという理由もありません。

で、どうせSambaだけは必ず稼動しているわけですからこれを利用して「大体のタイミングでデスクトップサーバーをシャットダウンする。」という方法を考えてみました。つまり、

「デスクトップサーバー上の特定のディレクトリにSamba経由で特定のファイルが書き込まれたとき、それをLinuxシステムで検出してサーバーをシャットダウンする。」

というちょっとアクロバティック?な方法です。

これならば誰にも管理アカウントを扱わせることなく、デスクトップサーバーのシャットダウンができるようになります。

このページの先頭へ↑

Sambaとcrondで自動シャットダウンの仕掛けを作る

まず、サーバーのシャットダウンのための専用の共有ポイントをSambaで作成します。

SambaはUNIX系OS上でWindowsのファイルサーバーを実現するサーバーアプリケーションですが、ファイル共有によって接続したWindowsから書き込まれたファイルやディレクトリはサーバー上のファイルシステムから直接参照することができます。

この共有ポイントは誰もが書き込み可能である必要がありますから、共有ポイントにするディレクトリ"/data/shutdown_marker"には777のパーミッションを与えておき、"/etc/samba/smb.conf"に、

シャットダウンコントロールのためのSambaの共有ポイントの例
シャットダウンコントロールのためのSambaの共有ポイントの例

のように設定を行います。この共有ポイントを普通の共有ポイントと同じように使わせては具合が悪いので「隠し共有ポイント」にするためにあえて"browseable = No"と設定しています。

もうひとつの仕掛けが"/etc/crontab"に登録する「特定のファイルやディレクトリを検出してサーバーをシャットダウンする」スクリプトです。これは"/usr/local/bin/shutdown_web3.bash"として作成しました。

シャットダウンコントロールのためのbashスクリプト
シャットダウンコントロールのためのbashスクリプト

単純なのでシェルスクリプトに詳しくない方でも多分お解りと思います。つまりこのスクリプトは、

「もしも"/data/shutdown_marker/shutdown"というファイルが存在した場合は、そのファイルを削除して2分後にサーバーをシャットダウンする。」

という動作をします。どうして"/sbin/poweroff"ではなく"/sbin/shutdown -h +2"、つまり「2分後にシャットダウン」という設定にしているのかというとちゃんと理由があります。

例えばお便利サーバー管理人がSSHでデスクトップサーバーに接続していじくっている最中に、節約家の家内がそれに気づかずにシャットダウン操作をしたとします。もしもそのときに実行されるコマンドが"/sbin/poweroff"だとすると間髪入れずにシャットダウン動作が始まってしまうので、管理人の作業はいきなり中断されることになっていまいます。

これでは危なくて大事な作業なんかできっこありません。

ところがここを"/sbin/shutdown -h +2"と設定しておけば、このコマンドが実行されてから一分毎に、ログインしているほかのユーザーのコンソール上に警告が表示されます。

実際にはこんな感じです。

/sbin/shutdown -h +2が行われたときのコンソール上への警告
/sbin/shutdown -h +2が行われたときのコンソール上への警告

シャットダウンまで2分間あれば大抵の操作はできますから、これで安心して家族にシャットダウン操作を行わせることができるというわけですね。

で、これを"/etc/crontab"に登録します。

シャットダウンコントロールのためのbashスクリプトを/etc/crontabに登録する
シャットダウンコントロールのためのbashスクリプトを/etc/crontabに登録する

サーバーは適当なタイミングでシャットダウンしても構わないので、ここではスクリプト"/usr/local/bin/shutdown_web3.bash"を03分、13分、23分、...という具合に10分毎に実行するように設定しています。

"/usr/local/bin/shutdown_web3.bash"はほとんど動作らしい動作はしませんのでもっと頻繁に実行しても大丈夫ですが、目的が「適当にシャットダウンできればいい」というものですのでこれで十分でしょう。

あとは"/etc/init.d/crond restart"でcrondを再起動して設定を有効にすれば準備完了です。

最後に"\\Web3"に接続して共有ポイント"shutdown_marker"を開き(共有の一覧には表示されないので、アドレスバーに直接タイプして開きます。)、"shutdown"という名前のディレクトリを作成してしばらく待ち、サーバーがシャットダウンするのを確認します。

これで基本的な電源ON/OFFの仕掛けはできました。

関連セクションへ 関連セクション・ Sambaサーバーの構築


このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。
Powered by Apache
”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。
www.centos.org - The Community ENTerprise Operating System