スリープおよびスリープ解除時にスクリプトを実行できますか?


48

OS X Lionを実行しているMacBook Pro 2010。

スリープイベントおよびスリープ解除イベントでスクリプトを実行することはできますか?

私の特定のアプリケーションは、MacBookとiMacの両方で定期的に使用するDropbox同期Truecryptボリュームを持っていることです。ふたを閉じる方がはるかに速く簡単なので、めったにMBPをシャットダウンしませんが、これは、MBPを閉じる前にTruecryptボリュームのマウントを解除し、それらを同期させておく必要があることを意味します。スクリプトのマウント/マウント解除のスクリプトを作成するのは簡単ですが、さらに一歩進んで、これらのスクリプトを自動的に実行したいと思います。

回答:


17

OSの出荷時に、スリープ/スリープ解除はスクリプトをトリガーできないようですが、サードパーティのソリューションが開発されています。

私はこれらのプログラムやベンダーについて個人的な経験はありません。


2
シナリオは私が探していることをするようです。ありがとう!
sh-beta

シナリオでapplescriptを起動し、bashスクリプトとvoiláを起動します。
しのばせる

アプリケーションを終了するには、単に新しいAppleScripウィンドウでこれを入力すると、フォルダSleepScriptsに保存します。TELLアプリケーション「CodeBoxは、」エンドTELL終了
brainrayを

24

SleepWatcher役に立つかもしれません。

説明から:MacまたはMacのディスプレイがスリープモードになったとき、またはユーザーの操作なしで一定時間経過した後、またはユーザーが休憩の後または電源を切った後にアクティビティを再開するときに、Unixコマンドを実行するために使用できますMacノートブックの供給が接続または分離されます。Macをスリープモードにしたり、最後のユーザーアクティビティからの時間を取得したりすることもできます。

10.6.8ではうまく機能しています。10.1(!)から10.7をサポートするさまざまなバージョンが利用可能


ここでの集まりですマックOSXのヒント SleepWatcherを使用しています。
スタッドギーク

4
SleepbrewerはHomebrewなどでインストールできbrew install sleepwatcherます。そして、この投稿を参照してください、それは非常に便利です。SleepWatcherユーティリティは、OS X El Capitan(10.11)もサポートしています。
-Rockallite

11

これは私自身のアプリですので、それを考慮してください。ただし、ControlPlaneにはスリープ/スリープ解除に基づいてアクションを実行する機能があります。あなたはでそれを見つけることができますhttp://www.controlplaneapp.com/

ControlPlaneはMarcoPoloのフォークで、Snow LeopardとLionで実行するように更新されています。


1
非常にクールなサウンドユーティリティ、これだけではやり過ぎですが、ウェイクアップ/スリープ以外でトリガーする必要がある場合は、かなりクールに聞こえます。Growlサポートも気に入っているので、それが何をしているのかを知っています。そして、その無料:)。
スタッドギーク

2
その無料
ケビンパーカー14年

これは、スリープとスリープ解除でドライブのマウントとアンマウントに使用できますか?オートマトラスクリプトを記述する必要がありますか?
bicepjai

1
数年後、Dustinが修正する時間がなかった彼のブログに投稿した非互換性の蓄積により、コントロールプレーンは現在メンテナンスされていません。残念ですが、理にかなっています。
ラフラン

6

Leopardのスクリプトに「ウェイク」トリガーを提供するために、次の単純な起動デーモンを開発しました。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>wake-alert</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/bash</string>
        <string>-c</string>
        <string>z=/tmp/wake; test -s $z || { date > $z; say w; }; 
tail -1 /Library/Logs/DirectoryService/DirectoryService.server.log | grep -v Sleep || > $z
        </string>
    </array>
    <key>WatchPaths</key>
    <array>
        <string>/Library/Logs/DirectoryService/DirectoryService.server.log</string>
    </array>
    <key>ExitTimeOut</key>
    <integer>2</integer>
    <key>ThrottleInterval</key>
    <integer>1</integer>
</dict>
</plist>

「say w」をコードに置き換えることができます。zに日付を書きますが、これを変更して何でも書き込めます。一部のスクリプトでは、「ExitTimeOut」を増やす必要がある場合があります。起動デーモンは/Library/LaunchDaemons/wake-alert.plistにあります

起動デーモンはDirectoryService.server.logを監視し、ファイルが空の場合に一時ファイルに書き込みます。ファイルは、ログの「スリープ」エントリとシャットダウンによってクリアされます。

「ユーザーの高速切り替え」を使用してスリープ状態にすると、ログインユーザーを必要とするスクリプトは、Launch Daemonを変更しない限り、実行が早すぎて失敗することがわかります。


1
/Library/Logs/DirectoryService/DirectoryService.server.logHigh Sierra(10.13)には存在しません。
Nowaker

おそらく使用可能な他のログがあります。
ネビルHillyer

2

あなたが発見して試してみたいと思われるかもしれない別のプログラムは、EventScriptsです。それは私が一般的に推薦する非常に印象的なプログラムですが、この目的のためにそれをテストした後、ないないで、あなたのMacがスリープ状態に移行し、代わりに睡眠スクリプト意志の前に、実際にそれらを実行するために十分迅速にトリガースクリプトのことができるように見えますMacが目覚めるまで実行しないでください(明らかに)。

私とあなたがこれを読んでいる誰もがこの結論に至るまでにかかったテストの時間を節約したいと思っています。しかし、多くの点で非常にうまく設計されており、非常に強力で柔軟なプログラムであるため、失敗したと言わざるを得ません。また、非常に安価です($ 3)。ただし、スリープする前にスクリプトを実行する場合、低レベルのパフォーマンスはそこにあるようには見えません。

一方、私のテストでは(これまでのところ)スリープウォッチャーは非常に信頼性が高く高速であるように見えました。また、無料です。これは素晴らしいです。テストを続けますが、うまくいかない場合は、答えを更新し、他のオプションのテストを続けます。

更新スリープウォッチャーは、最初はこの答えを書いて以来一貫して信頼できるとは思いませんでしたが、最初は動作しているように見えました。私の場合、任意のスクリプトを実行する必要はありませんが、代わりに外部ドライブを取り出すだけです。私はこれまでのところ、これを非常にうまく行う小さくて安価なアプリを見つけました: Jettison。これはすぐに、私がいなければ生きていけない少数のユーティリティの1つになりました。あなたのニーズが私のものと同じであれば、彼らが請求する数ドルの価値があると思うでしょう。


1

WakeWatcherは、この問題に対処するために作成したシンプルなOS X フェースレスバックグラウンドアプリケーションです。~/.onwake起動が検出されるたびに実行されます。その後、そのスクリプトにドライブをマウント/再マウントするコマンドを配置できます。

WakeWatcherは、ログイン項目としての使用に適しています。あまり洗練されていませんが、無料で簡単です。

スリープ時にスクリプトを実行するのは簡単な追加ですが、システムが実際にスリープする前にスクリプトが完了するのに利用できる時間が心配です。本当に必要な場合は、GitHubプロジェクトに対して問題を開き、追加します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.