OSX 已启动 - 在后台会话中运行脚本会忽略启动间隔


OSX launchd - running script in the Background Session ignores StartInterval

社区!

我正在尝试在我的 OSX 5 上每 10.7.4 分钟执行一次简单的脚本。无论用户是否登录到计算机(即在后台会话中),它都应该运行

因此,我在/System/Library/LaunchDaemons/创建了 com.me.script.plist并通过以下方式加载它:launchctl -S background ./com.me.script.plist并通过以下方式启动它:launchchctl start com.me.script

它第一次运行良好。但是在我设定的 300 秒间隔之后,它再也不会运行了!

你们有什么建议吗?如果我在 Aqua 会话中运行它,它可以完美运行,但是,这意味着它只会在用户登录时运行。但是,我真的需要它在此之前开始运行......并且无论用户登录/注销还是其他用户登录/注销,都继续这样做。

这是我的清单:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>LimitLoadToSessionType</key>
        <string>Background</string>
        <key>Label</key>
        <string>com.me.script</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/bin/php</string>
            <string>/Sites/script/notifier.php</string>
        </array>
        <key>StartInterval</key>
        <integer>900</integer>
    </dict>
</plist>

我要说的是问题出在这里:

<string>/Sites/script/notifier.php</string>

你的意思是写以下内容吗?

<string>/Users/username/Sites/script/notifier.php</string>

/开始路径意味着路径从驱动器的根目录开始,默认情况下,OSX 在根目录上没有/Sites目录。

我发现了自己的错误...如果我希望它每 5 分钟运行一次,则 StartInterval 应该是 300 而不是 900。 对不起,愚蠢。