Başlatılan işim neden RunAtLoad anahtarı yanlış ayarlanmış olsa bile önyüklemede çalışıyor?


10

Her gün belirli bir zamanda bir programı çalıştırmak için kullandığım bir fırlatma dosyası var. Çalışıyor, ancak bilgisayarı her başlattığımda veya GUI programı olan LaunchControl'ü kullanarak işi boşalttığım ve yeniden yüklediğimde programı çalıştırıyor - anahtar yanlış ayarlanmış olsa bile RunAtLoad?

Tam plist dosyası aşağıdadır; içinde bulunur /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>

Düşünceler?


KeepAliveTanımımın ima ettiği RunAtLoadve hatta RunAtLoadyanlış yapma girişimi geçersiz kıldığı anlaşılıyor . Neden böyle olduğundan emin değilim, ancak KeepAlivebloğu çıkarmak sorunu çözmüş gibi görünüyor.
user76493

Yanıtlar:


10

Muhtemelen SuccessfulExitve RunAtLoadtuşları arasında bir etkileşim var . Launchd plist kılavuzu sayfa eğer bir inversiyon gerçekleşir bahseder RunAtLoadayarlanır:

SuccessfulExit

Doğruysa, iş programdan çıktıktan ve sıfır durumundan çıktıktan sonra yeniden başlatılır.

Yanlışsa, iş ters durumda yeniden başlatılır. Bu anahtar, "RunAtLoad" öğesinin true değerine ayarlandığı anlamına gelir; çünkü işin çıkış durumunu alabilmemiz için işin en az bir kez çalışması gerekir.

Diğerleri bu davranış ile mücadele etmişlerdir, bkz . Launchd ignore, RunAtLoad = false .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.