在OS X 10.11上安装的Sleepwatcher 2.2中,并通过LaunchD作为代理启动它。
启动正常并显示在活动监视器中。
但是,我希望它在计算机唤醒时触发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 :(得分:2)
我遇到了类似的问题,因此我使用另一种名为Hammerspoon的开源工具采用了不同的方法。它可以为MacOS上的一系列事物提供自动化,包括睡眠/唤醒事件。通过将以下内容添加到Hammerspoon ~/.hammerspoon/init.lua
(或创建一个')脚本,在机器唤醒时触发,可以非常简单地复制sleepwatcher的功能或睡眠并调用相应的唤醒和睡眠脚本(例如/Users/username/scripts
- 确保 username
已更改)来自sleepwatcher:
function caffeinateWatcher(eventType)
if (eventType == hs.caffeinate.watcher.systemWillSleep or
eventType == hs.caffeinate.watcher.systemWillPowerOff) then
print ("WillSleep...")
-- Execute sleep script
hs.task.new("/Users/username/scripts/rc.sleep", nil):start()
elseif (eventType == hs.caffeinate.watcher.systemDidWake) then
print ("Woken...")
-- Execute wake script
hs.task.new("/Users/username/scripts/rc.wake", nil):start()
end
end
sleepWatcher = hs.caffeinate.watcher.new(caffeinateWatcher)
sleepWatcher:start()
注意,如果您希望Hammerspoon启动您需要的shell脚本,以确保它们以标准bash shell标头#!/bin/bash
开头。