1

平日のみ、1 日 1 回実行される 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>

Mac OSX 10.4 に組み込まれているオリジナルの launchd でこれを実行しています。うまくいけば、plist ファイルに少し問題があるだけです。誰にもアイデアがありますか?

4

1 に答える 1

2

その構成ファイルを使用して、10.4 システムで 1 分に 1 回の動作も取得します。

私の 10.4 システムの launchd.plist(5) マンページには、StartCalendarInterval が「整数の辞書」であると書かれています。使用している「整数の辞書の配列」は、10.6 launchd.plist(5) manpageに記載されているようです。配列機能が 10.5 で導入されたことを示すフォーラムの投稿を見つけました。

10.4 の場合、おそらく、使用する StartCalendarInterval ごとに 1 つのファイルを作成する必要があります。または、毎日同じ時刻を使用することができる場合 (月曜日を他の時刻と一致させる)、plist ファイルで平日の指定を省略できます (スクリプトが毎日指定された時刻に実行されるようにするため)。次に、曜日が週末の場合はスクリプトを早く終了させますtest "$(date +%u)" -lt 6 || exit 0)。

于 2009-11-24T07:41:46.997 に答える