2016年5月3日火曜日

"SleepWatcher"の導入にちょいと苦戦(その1)

2台目のMac Book Airの導入と一緒にTime Capusuleを導入してNAS化してます。

Time CapsuleのNAS化と同時に仕事用のデータを保存していた外付けHDDもTime Capsuleに接続してNAS化させてしばらく運用しているのだが、なぜか"Mac mini"だけスリープから復帰した時にNASのボリュームがアンマウントされてしまったまま復帰しない。

起動時には"システム環境設定"→"アカウント"の"ログイン項目"でサーバーボリュームを登録しているので問題なく自動マウントされる。
Mac miniは利用しているCADソフトウェアのバージョン推奨環境維持のために10.6(Snow Leopard)からアップグレードできていないので、その辺りに問題があるのかもしれない。

普段仕事をしていてデータの保存を実行した時に「ボリュームが見つからない」旨のエラーを吐くので、その段階でNASのマウント作業を行っていたのだが、流石に鬱陶しくなって来たのでまじめに問題解決を試みた次第です。

「スリープ復帰」「NAS」「自動マウント」などでググるとかなり大量に情報が出てきます。どの記事でも共通しているのは"Sleepwatcher"というdaemonプログラムを利用している事。

つまりはスリープのタイミングを監視してくれる常駐プログラムを利用してリモートドライブをマウント/アンマウントする命令を自動的に実行するってことだ。

とりあえず"SleepWatcher"で検索すると一番最初に出てくる作者(?)のサイト(http://www.bernhard-baehr.de/)から最新版らしい"SleepWatcher 2.2"をダウンロードして解凍。

ReadMeファイルに書かれたシンプルな説明にそってプログラムのセットアップ。
コマンドのインストールと常駐化させるところまでは説明通りに配置するだけなので特に複雑な作業はありません。

動かす分には置き場所はどこでも良いのだろうけど、Unix/Linux流儀に合わせてなのかMac OSには用意されていない "/usr/local" 以下に "sbin" と "share/man/man8"のフォルダを用意してそれぞれSleepWatcherの本体とmanualファイルを格納。

/usr/local/sbin/sleepwatcher
/usr/local/share/man/man8/sleepwatcher.8

次に自動実行させるためのコンフィグレーションファイルの配置。
ここは2択になっていて "/Library/LaunchAgents/" 以下に格納してシステム起動時に常駐化させるか、~/Library/LaunchAgents/" 以下に格納してローカルユーザーがログインした時に常駐化させるかでplistファイルがそれぞれに用意されています。

plistファイルの中身を覗いてみるとローカルユーザーで実行したほうが何かと便利そうだったので、予め用意してくれている "de.bernhard-baehr.sleepwatcher-20compatibility-localuser.plist" をそのまま自分のホームディレクトリにある "Library/LaunchAgents/" の中に格納。

~/Library/LaunchAgents/de.bernhard-baehr.sleepwatcher-20compatibility-localuser.plist

plistファイルをいじらずに利用するのであれば、自動実行スクリプトのファイル名は
スリープ突入時:~/.sleep
スリープ解除時:~/.wakeup
となっています。

めんどくさがり屋なので、私はそのままホームディレクトリ(/Users/<user name>)直下にターミナルから ".sleep" と ".wakeup" ファイルを "touch" コマンドで作成。(この段階でまだ中に何を記述するか決まってなかったので入れ物だけ作ってしまいました。)

正直 "."(ドット) から始まる隠しファイルはFinder上からは扱いにくいのだけれど、かと言ってファイル名を変更するとplistファイルの中身も編集しなきゃならないし、ホームディレクトリに目障りなファイルが鎮座するのも嫌なのでデフォルトのままの方が無難だと判断した次第。

実は本題はここから先で、用意した ".sleep" と ".wakeup" の中にどんな命令を入れるかが一番の肝で、実際に少し悪戦苦闘したのだけれど前置きだけでかなり長文になってしまったので続きは次回に...。
(^_^;

【補足】
"LaunchAgents" に登録した "plist" ファイルは一旦ログインし直すか "launchctl" コマンドを使って手動で常駐化させるまで機能しませんのであしからず。

$ launchctl  load ~/Library/LaunchAgents/de.bernhard-baehr.sleepwatcher-20compatibility-localuser.plist

0 件のコメント :

コメントを投稿