【问题标题】:OSX launchd - running script in the Background Session ignores StartIntervalOSX launchd - 在后台会话中运行脚本忽略 StartInterval
【发布时间】:2012-08-05 17:46:25
【问题描述】:

社区!

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

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

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

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

这是我的清单:

<?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>

【问题讨论】:

    标签: php macos intervals launchd


    【解决方案1】:

    我想说问题出在这里:

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

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

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

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

    【讨论】:

    • 我将它添加到根目录中以便每个用户都可以访问它。我发现我的问题:StartInterval 设置为 900 .. 而不是 300。抱歉
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-01
      • 2015-03-29
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 2012-05-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多