2016-09-12 56 views
1

在OS X 10.11上安裝了Sleepwatcher 2.2並通過LaunchD作爲代理啓動。OS X 10.11上的Sleepwatcher在喚醒時不執行腳本

它啓動並顯示在活動監視器中。

但是,我想讓它在電腦醒來時觸發一個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 

當通過輸入以下內容在臨界窗口處執行Sleepwatcher時,它似乎工作。

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

但是,當試圖將它作爲LaunchD下的啓動項運行時,似乎無法執行我的python腳本。

我已經搜索了所有,無法弄清楚爲什麼它在LaunchD中啓動時不工作。

有沒有人遇到這種類型的問題?

在此先感謝。

+0

是的,我把命令放在chmod + x /etc/rc.sleep中。我不知道爲什麼上面有額外的空間。 – user1709730

+0

您似乎缺少plist的註冊信息,這需要啓動'sleepwatcher'運行,並且在睡眠和喚醒時實際調用'/ etc/rc.sleep'和'/ etc/rc.wake'腳本事件發生。 – Petesh

+0

嗨Petesh,而不是做一個launchctl加載/Library/LaunchAgents/de.bernhard-baehr.sleepwatcher-20compatibility-localuser.plist,我重新啓動服務器。這也應該把它拿起來。你知道是否有任何遺留的日誌,以便我可以看到在加載期間或在喚醒事件期間腳本執行過程中可能發生了什麼錯誤? – user1709730

回答

0

我遇到了類似的問題,所以我採用了另一種使用另一個名爲Hammerspoon的開源工具的方法。它可以提供MacOS上一堆事物的自動化,包括睡眠/喚醒事件。這是很簡單的通過添加以下到Hammerspoon的~/.hammerspoon/init.lua複製sleepwatcher的功能(或創建一個「勺子」)腳本時,機器喚醒,睡覺,並呼籲從sleepwatcher相應的喚醒和睡眠的腳本觸發:

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啓動shell腳本,則需要確保它們以標準bash shell標頭#!/bin/bash開頭。