Чому моє запущене завдання працює під час завантаження, навіть якщо для клавіші RunAtLoad встановлено значення false?


10

У мене є запущений пліст-файл, який я використовую для запуску програми у вибраний час щодня. Вона працює, але вона також запускає програму щоразу, коли я завантажую комп'ютер або завантажую та перезавантажую роботу за допомогою програми GUI LaunchControl --- хоча у мене RunAtLoadключ встановлений на false?

Повний файл плісту знаходиться нижче; він розташований у /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визначення передбачало RunAtLoadі навіть перекривало мою спробу встановити RunAtLoadпомилкове. Не впевнений, чому це так, але видалення KeepAliveблоку, здається, вирішило проблему.
user76493

Відповіді:


10

Можливо, у вас взаємодія між клавішами SuccessfulExitта RunAtLoad. Сторінка керівництва запущеного списку згадує, що інверсія має місце, якщо RunAtLoadвона встановлена:

УспішнийExit

Якщо це правда, завдання буде перезапущено до тих пір, поки програма закінчиться і зі статусом виходу нуля.

Якщо значення false, завдання буде перезапущено у зворотному стані. Цей ключ означає, що для "RunAtLoad" встановлено значення true, оскільки завдання потрібно виконати хоча б один раз, перш ніж ми зможемо отримати статус виходу.

Інші боролися з такою поведінкою, див. Запускається ігнорує RunAtLoad = false .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.