ทำไมงาน Launchd ของฉันถึงรันตอนบู๊ตถึงแม้ว่าคีย์ RunAtLoad จะตั้งค่าเป็นเท็จ


10

ฉันมีไฟล์ plistplist ที่ฉันใช้เพื่อรันโปรแกรมตามเวลาที่เลือกทุกวัน มันใช้งานได้ แต่มันก็ยังรันโปรแกรมเมื่อใดก็ตามที่ฉันบูตคอมพิวเตอร์หรือถอดและโหลดงานใหม่โดยใช้โปรแกรม 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คำจำกัดความของฉันหมายถึงRunAtLoadและแม้แต่ความพยายามของฉันที่จะตั้งค่าRunAtLoadเป็นเท็จ ไม่แน่ใจว่าทำไมเป็นกรณีนี้ แต่การKeepAliveบล็อกออกดูเหมือนจะแก้ไขปัญหาได้แล้ว
user76493

คำตอบ:


10

คุณน่าจะมีปฏิสัมพันธ์ระหว่างSuccessfulExitและRunAtLoadปุ่ม plist launchd คู่มือหน้ากล่าวถึงผกผันจะเกิดขึ้นถ้าRunAtLoadเป็นชุด:

SuccessfulExit

หากเป็นจริงงานจะถูกเริ่มใหม่ตราบใดที่โปรแกรมออกและมีสถานะออกเป็นศูนย์

หากเป็นเท็จงานจะถูกรีสตาร์ทในสภาพที่ตรงกันข้าม คีย์นี้บอกเป็นนัยว่า "RunAtLoad" ถูกตั้งค่าเป็นจริงเนื่องจากงานต้องทำงานอย่างน้อยหนึ่งครั้งก่อนที่เราจะได้รับสถานะการออก

อื่น ๆ ได้ต่อสู้กับปัญหานี้ดูlaunchd ละเว้น RunAtLoad

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.