launchd รันโปรแกรมทุกชั่วโมงแม้ว่าจะมีการจัดเตรียมอาร์เรย์ StartCalendarInterval


2

ฉันมี StartCalendarInterval ตั้งในไฟล์ Plist Plist ของฉันเช่นนี้:

<?xml version="1.0" encoding="UTF-8"?>
<!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>local.script.launcher</string>

        <key>Program</key>
        <string>/usr/bin/osascript</string>

        <key>ProgramArguments</key>
        <array>
            <string>osascript</string>
            <string>/Users/me/basic-script.scpt</string>
        </array>

        <key>StartCalendarInterval</key>
        <array>
            <dict>
                <key>Hour</key>
                <integer>8</integer>
                <key>Minute</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Hour</key>
                <integer>16</integer>
                <key>Minute</key>
                <integer>0</integer>
            </dict>
            <dict>
                <key>Hour</key>
                <integer>24</integer>
                <key>Minute</key>
                <integer>0</integer>
            </dict>
        </array>
    </dict>
</plist>

แม้ว่าฉันจะประกาศแตกต่างกัน 3 อย่าง StartCalendarInterval s, ตัวแทนยังคงเปิดตัวโปรแกรมทุกชั่วโมง

ผมทำอะไรผิดหรือเปล่า?

.

สารละลาย:

ตาม @ คำตอบของพงษ์ สำหรับ launchd ไฟล์ plist และ StartCalendarInterval, เที่ยงคืน, 12AM, หรือเวลาทหาร 2400 ชั่วโมงคือ Hour = 0 ไม่ 24.


2
โปรดโพสต์ไฟล์ plist ทั้งหมดเนื่องจากส่วนอื่น ๆ ของไฟล์อาจเป็นสาเหตุของปัญหา
jksoegaard

Updated ฉันคิดว่าทุกคนที่พยายามช่วยจะต้องการเห็นมัน แต่สแต็คจะไม่ให้ฉันโพสต์ตามที่ระบุว่า "รหัสมากเกินไป"
Andre Bulatov

2
สำหรับชั่วโมงคุณจะต้องระบุ 0 แทนที่จะเป็น 24 ฉันไม่สามารถตรวจสอบได้ในตอนนี้ แต่ฉันเดาว่าการทิ้ง 24 นั้นไม่ถูกต้องและเพิ่งทำงานในนาทีที่ 0 นอกจากนี้คุณยังไม่ได้โหลดและโหลดซ้ำ ตัวแทนหลังจากแก้ไข plist หรือไม่

1
หวาน! ฉันจะลองแจ้งให้คุณทราบในวันนี้ Def unload เอ็ด / load ed แล้วอีกครั้ง start เอ็ด
Andre Bulatov

@AndreBulatov กรุณาโพสต์มันเพื่อ pastebin และลิงค์ที่นี่
klanomath

คำตอบ:


3

launchd กำลังขว้างออกไป 24 ในฐานะที่ไม่ถูกต้อง ชั่วโมง ค่าจึงตีความว่ารายการทั้งหมดเป็น นาที = 0 . สิ่งนี้ทำให้ตัวแทนของคุณทำงานทุก ๆ ชั่วโมงที่จุด

ค่าที่ถูกต้องสำหรับเที่ยงคืนคือ 0 :

<dict>
    <key>Hour</key>
    <integer>0</integer>

    <key>Minute</key>
    <integer>0</integer>
</dict>

1
ยังไม่ถึงเที่ยงคืน แต่สามารถยืนยันได้แล้วว่าสามารถแก้ไขปัญหาได้เนื่องจากการทำงานรายชั่วโมงหยุดและเมื่อฉันเปลี่ยน 24 ไปยัง 0ฉันยังได้เพิ่มรายการสำหรับ 23:00 (23) และที่ทำงานได้อย่างสมบูรณ์ ขอบคุณ!
Andre Bulatov
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.