2016-09-12 7 views
1

OS X 10.11のSleepwatcher 2.2がインストールされていて、LaunchD経由でエージェントとして起動しています。OS X 10.11のSleepwatcherがWakeでスクリプトを実行していません

これは正常に起動し、アクティビティモニターに表示されます。

しかし、私はそれがコンピュータが目を覚ますときにpythonスクリプトを発射したい。

インストールの手順は次のとおりです。

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 
sudo cp ~/Desktop/sleepwatcher_2.2/sleepwatcher/config/rc.sleep /etc 
sudo cp ~/Desktop/sleepwatcher_2.2/sleepwatcher/config/rc.wakeup /etc 
sudo cp ~/Desktop/sleepwatcher_2.2/sleepwatcher/config/de.bernhard-baehr.sleepwatcher-20compatibility-localuser.plist /Library/LaunchAgents 

chmod +x /etc/rc.sleep 
chmod +x /etc/rc.wakeup 
chmod +x /usr/local/bin/test.py 

私のrc.wakeupファイルは以下の通りです。

#!/bin/sh 
/usr/local/bin/python3 /usr/local/bin/test.py 

次のように入力して、睡眠ウインドウでスリープウォッチャーを実行すると動作するようです。 launchdの下スタートアップ項目としてそれを実行しようとしたとき

/usr/local/sbin/sleepwatcher --verbose --wakeup /usr/local/bin/test.py 

しかし、私のPythonスクリプトを実行動作するようには思えません。

LaunchDで起動したときに、なぜそれが動作していないのかわかりません。

誰もこのタイプの問題に遭遇しましたか?

ありがとうございます。

+0

はい、chmod + x /etc/rc.sleepというコマンドを入力しました。なぜ上に余分なスペースがあったのか分かりません。 – user1709730

+0

あなたは 'sleepwatcher'の実行を開始し、'/etc/rc.sleep'と '/ etc/rc.wake'スクリプトを実際に起動するために必要なplistの登録が不足しているようですイベントが発生します。 – Petesh

+0

こんにちはPetesh、launchctl load /Library/LaunchAgents/de.bernhard-baehr.sleepwatcher-20compatibility-localuser.plistを実行する代わりに、サーバーを再起動しました。これはまたそれを拾うべきである。ウェイクイベント中にスクリプトのロード中または実行中にエラーが発生した可能性があることを確認できるように、ログが残っているかどうかを知っていますか? – user1709730

答えて

0

私は同様の問題に遭遇しましたので、別のオープンソースツールHammerspoonを使って別のアプローチをとっています。それは、睡眠/覚醒イベントを含むMacOS上のものの束の自動化を提供することができます。

function caffeinateWatcher(eventType) 
    if (eventType == hs.caffeinate.watcher.systemWillSleep or 
      eventType == hs.caffeinate.watcher.systemWillPowerOff) then 
      print ("WillSleep...") 
     -- sleep:start() 
       hs.task.new("/etc/rc.sleep", nil):start() 
    elseif (eventType == hs.caffeinate.watcher.systemDidWake) then 
     print ("Woken...") 
     -- wake:start() 
       hs.task.new("/etc/rc.wake", nil):start() 
    end 
end 

sleepWatcher = hs.caffeinate.watcher.new(caffeinateWatcher) 
sleepWatcher:start() 

注:それはHammerspoonの~/.hammerspoon/init.lua(あるいは「スプーン」を作成)に以下を追加することにより、sleepwatcherの機能を複製するマシンが起きるかスリープとsleepwatcherから対応するウェイクと睡眠スクリプトを呼び出したときにトリガスクリプトは非常に簡単ですHammerspoonにシェルスクリプトを起動させたい場合は、標準のbashシェルヘッダ#!/bin/bashで始まるようにする必要があります。

関連する問題