MacBookAirを持っています。私はよくMicrosoftのRDPクライアントを使用して仮想ワークステーションに接続します。 OS Xがスリープ状態になる前に、ふたを閉じるときにこのRDPセッションを自動的に閉じる(RDPを終了する)必要があります。
この機能はどのように実現できますか?
OSXの電源ステータスの変化を傍受できるツールがいくつかあります。
SleepWatcherでこれを試してみましょう。 Bernhard Baehrのホームページからツールをダウンロードし、インストール手順に従います。ダウンロードをデスクトップに解凍したと仮定して、ターミナルウィンドウから次のコマンドを呼び出します。
Sudo mkdir -p /usr/local/sbin /usr/local/share/man/man8
Sudo cp ~/Desktop/sleepwatcher_2.2/sleepwatcher /usr/local/sbin
Sudo cp ~/Desktop/sleepwatcher_2.2/sleepwatcher.8 /usr/local/share/man/man8
これにより、sleepwatcher
バイナリとマンページがインストールされます。管理者パスワードの入力を求められます。
それでは、~/.sleep
というスリープスクリプトを作成しましょう。これには、マシンがスリープ状態になったとき(つまり、ふたが閉じたとき)に実行されるコマンドが含まれます。
touch ~/.sleep
open -e !$
このファイルに、以下を追加します。
osascript -e 'tell application "Remote Desktop Connection" to quit'
これにより、AppleScriptコマンドを使用してMicrosoftRDPアプリケーションが終了します。タイトルに応じて名前を変更する限り、どのアプリケーションでもこれを行うことができます。ファイルを保存します。次に、実行可能にする必要があります。
chmod +x ~/.sleep
次に、最初にRDPプログラムを起動し、次にターミナルで以下を実行して、スクリプトをテストします。
/usr/local/sbin/sleepwatcher --verbose --sleep ~/.sleep
これでは何も出力されないため、RDPとSleep Watcherの両方を実行したままにして、MacBookの蓋を閉じます。実際にスリープ状態になるまで数秒待ちます。その後、再び目を覚まします。 RDPは終了しましたか?すごい!何かがうまくいかなかったのですか? sleepwatcher
コマンドの出力を見て、失敗した場所に関するヒントを取得します。
を押してスリープウォッチャーをキャンセルできるようになりました CtrlC ターミナルで。
Sleep Watcherを常に実行するには、LaunchDaemonにする必要があります。設定例とrc
-スクリプトをコピーして、新しい設定ファイルを作成します。
Sudo cp ~/Desktop/sleepwatcher_2.2/config/de.bernhard-baehr.sleepwatcher-20compatibility.plist /Library/LaunchDaemons/de.bernhard-baehr.sleepwatcher.plist
Sudo cp ~/Desktop/sleepwatcher_2.2/config/rc.* /etc
次に、launchd
を使用して構成ファイルをロードします。
Sudo launchctl load /Library/LaunchDaemons/de.bernhard-baehr.sleepwatcher.plist
必要なのはそれだけです。これで、Macをスリープ状態にするたびに.sleep
ファイルが常に実行されます。