【发布时间】:2017-01-20 09:52:51
【问题描述】:
在 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 中启动时不起作用。
有人遇到过这种问题吗?
提前致谢。
【问题讨论】:
-
是的,我将命令输入为 chmod +x /etc/rc.sleep。我不知道为什么上面有一个额外的空间。
-
您似乎缺少 plist 的注册,这是启动
sleepwatcher运行以及在睡眠和唤醒事件发生时实际调用/etc/rc.sleep和/etc/rc.wake脚本所必需的。 -
嗨Petesh,我没有执行launchctl load /Library/LaunchAgents/de.bernhard-baehr.sleepwatcher-20compatibility-localuser.plist,而是重新启动了服务器。这也应该把它捡起来。您是否知道是否留下了任何日志,以便我可以查看在唤醒事件期间加载或执行脚本期间可能引发错误的原因?
-
原来上面没有问题,问题出在使用的文件之一上。
标签: python macos unix terminal macports