OS X 10.11上的Sleepwatcher未在上执行脚本

2024-09-28 17:02:20 发布

您现在位置:Python中文网/ 问答频道 /正文

在OSX10.11上安装了SleepWatcher2.2,并将其作为代理启动。在

它启动正常,并显示在活动监视器中。在

但是,我希望它在计算机唤醒时启动一个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.唤醒文件如下。在

^{pr2}$

当在terimnal窗口通过输入以下内容来执行Sleepwatcher时,它似乎可以工作。在

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

但是,当尝试在LaunchD下将其作为启动项运行时,似乎无法执行python脚本。在

我到处都在搜索,不知道为什么它在发射时不起作用。在

有人遇到过这种问题吗?在

提前谢谢。在


Tags: 脚本configshareusrlocaletcsudocp
1条回答
网友
1楼 · 发布于 2024-09-28 17:02:20

我遇到了类似的问题,所以我使用另一种开源工具Hammerspoon采取了不同的方法。它可以为MacOS上的许多事情提供自动化,包括睡眠/唤醒事件。复制sleepwatcher的功能非常简单,方法是将以下内容添加到Hammerspoon的~/.hammerspoon/init.lua(或创建一个“spoon”)脚本,该脚本在机器唤醒或休眠时触发,并从sleepwatcher调用相应的唤醒和睡眠脚本(例如/Users/username/scripts-确保更改了username

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脚本,则需要确保它们以标准bashshell头#!/bin/bash开头。在

相关问题 更多 >