每分钟启动一次作业

时间:2009-11-24 06:02:18

标签: macos launchd

我正在尝试编写一个每天运行一次的launchd脚本,仅在工作日。但是一旦我加载了脚本,它就会每分钟运行一次而不是按计划运行。无论是以我自己还是以超级用户身份加载脚本,都会发生这种情况:

launchctl load ~/Library/LaunchAgents/org.myname.foojob

sudo launchctl load /Library/LaunchDaemons/org.myname.foojob

这是plist文件:

org.myname.foojob

<!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>Label</key>

    <string>org.myname.foojob</string>

    <key>ProgramArguments</key>

    <array>

        <string>/Users/myname/bin/foojob.sh</string>

    </array>

    <key>StartCalendarInterval</key>

    <array> 

           <dict>

            <key>Hour</key>

            <integer>16</integer>

            <key>Minute</key>

            <integer>00</integer>

            <key>Weekday</key>

            <integer>1</integer>

        </dict>

        <dict>

            <key>Hour</key>

            <integer>16</integer>

            <key>Minute</key>

            <integer>00</integer>

            <key>Weekday</key>

            <integer>2</integer>

        </dict>

        <dict>

            <key>Hour</key>

            <integer>16</integer>

            <key>Minute</key>

            <integer>00</integer>

            <key>Weekday</key>

            <integer>3</integer>

        </dict>

        <dict>

            <key>Hour</key>

            <integer>16</integer>

            <key>Minute</key>

            <integer>00</integer>

            <key>Weekday</key>

            <integer>4</integer>

        </dict>

        <dict>

            <key>Hour</key>

            <integer>16</integer>

            <key>Minute</key>

            <integer>00</integer>

            <key>Weekday</key>

            <integer>5</integer>

        </dict>
    </array>
</dict>
</plist>

<!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>Label</key> <string>org.myname.foojob</string> <key>ProgramArguments</key> <array> <string>/Users/myname/bin/foojob.sh</string> </array> <key>StartCalendarInterval</key> <array> <dict> <key>Hour</key> <integer>16</integer> <key>Minute</key> <integer>00</integer> <key>Weekday</key> <integer>1</integer> </dict> <dict> <key>Hour</key> <integer>16</integer> <key>Minute</key> <integer>00</integer> <key>Weekday</key> <integer>2</integer> </dict> <dict> <key>Hour</key> <integer>16</integer> <key>Minute</key> <integer>00</integer> <key>Weekday</key> <integer>3</integer> </dict> <dict> <key>Hour</key> <integer>16</integer> <key>Minute</key> <integer>00</integer> <key>Weekday</key> <integer>4</integer> </dict> <dict> <key>Hour</key> <integer>16</integer> <key>Minute</key> <integer>00</integer> <key>Weekday</key> <integer>5</integer> </dict> </array> </dict> </plist>

我正在使用Mac OSX 10.4中的原始内置launchd运行它。希望plist文件略有错误。有人有想法吗?

1 个答案:

答案 0 :(得分:2)

我还使用该配置文件在我的10.4系统上获得了每分钟一次的行为。

我的10.4系统上的launchd.plist(5)联机帮助页说StartCalendarInterval是一个“整数字典”。看起来你正在使用的“整数字典数组”记录在the 10.6 launchd.plist(5) manpage中。我找到了forum post that indicates that the array feature was introduced in 10.5

对于10.4,您可能必须为要使用的每个StartCalendarInterval创建一个文件。或者,如果您可以每天使用相同的时间(将星期一与其他人一致),您可以在plist文件中省略工作日规范(以便您的脚本每天在指定的时间运行)和如果星期几是周末test "$(date +%u)" -lt 6 || exit 0),则让您的脚本提前退出。