RunAtLoadキーをfalseに設定しても、起動時にlaunchdジョブが実行されるのはなぜですか?


10

毎日選択した時間にプログラムを実行するために使用するlaunchd plistファイルがあります。それは機能しますが、キーをfalseに設定していても、コンピューターを起動したり、GUIプログラムLaunchControlを使用してジョブをアンロードして再ロードしたりするたびにプログラムが実行されます。RunAtLoad

完全なplistファイルは次のとおりです。それはにあり/Library/LaunchAgents/ます:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>RunAtLoad</key>
    <false/>
    <key>KeepAlive</key>
    <dict>
        <key>SuccessfulExit</key>
        <false/>
    </dict>
    <key>Label</key>
    <string>com.adbot.plist</string>
    <key>LowPriorityIO</key>
    <true/>
    <key>Program</key>
    <string>/Users/wcm1/programming/ricedh/adbot/adbot.py</string>
    <key>StandardErrorPath</key>
    <string>/tmp/com.adbot.plist.err</string>
    <key>StandardOutPath</key>
    <string>/tmp/com.adbot.plist.out</string>
    <key>StartCalendarInterval</key>
    <array>
        <dict>
            <key>Hour</key>
            <integer>10</integer>
            <key>Minute</key>
            <integer>30</integer>
        </dict>
    </array>
</dict>
</plist>

考え?


私のKeepAlive定義はを暗示していてRunAtLoadRunAtLoadfalse に設定しようとする私の試みを上書きしていたようです。これが事実である理由はわかりませんが、KeepAliveブロックを削除すると問題が解決したようです。
user76493 14

回答:


10

SuccessfulExitRunAtLoadキーの間に相互作用がある可能性があります。launchdのplistをマニュアルページがあれば反転が起きる言及RunAtLoad設定されます。

SuccessfulExit

trueの場合、プログラムが終了し、終了ステータスがゼロである限り、ジョブは再起動されます。

falseの場合、ジョブは逆の状態で再開されます。このキーは、「RunAtLoad」がtrueに設定されていることを意味します。これは、終了ステータスを取得する前に、ジョブを少なくとも1回実行する必要があるためです。

他の人はこの振る舞いに苦労しています。launchdがRunAtLoad = falseを無視するのを見てください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.