1

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

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>

我正在使用 Mac OSX 10.4 中的原始内置启动程序运行它。希望 plist 文件有点问题。有人有想法吗?

4

1 回答 1

2

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

我的 10.4 系统上的 launchd.plist(5) 联机帮助页说 StartCalendarInterval 是“整数字典”。看起来您正在使用的“整数字典数组”记录在10.6 launchd.plist(5) 联机帮助页中。我发现一个论坛帖子表明数组功能是在 10.5 中引入的

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

于 2009-11-24T07:41:46.997 回答