AppleScript ที่เริ่มต้นและเวลาที่กำหนด


1

ฉันกำลังพยายามเริ่มต้น AppleScript และ AppleScript ซึ่งทำงานในเวลาที่กำหนด (ฉันเกลียดวิธีการอัตโนมัติ / ปฏิทิน)

on idle

    set currentTime to current date
    if the weekday of currentTime is (need to do for Tuesday to Saturday) then
        do shell script "kextunload /System/Library/Extensions/AppleHDA.kext " password "..." with administrator privileges

    end if

    --only check once a day
    return 24 * 60 * 60
end idle

ปัญหาเดียวของวิธีนี้คือสคริปต์ที่ใช้อยู่ตลอดเวลาใช้หน่วยความจำและฉันยังไม่แน่ใจว่าจะคำนวณเวลาที่ถูกต้องได้อย่างไร (24.60.60 คือทุก 00:00 ใช่ไหม) ฉันต้องการเรียกใช้เวลา 05.00 น

หากฉันเข้าใจถูกต้องการเพิ่ม script.scpt ไปที่ / Library / LaunchDaemons จะทำให้สคริปต์ทำงานตลอดเวลาแม้ว่าผู้ใช้จะออกจากระบบหรือเข้าสู่ระบบด้วยโปรแกรมรักษาหน้าจอใช่ไหม

ฉันอ่านเกี่ยวกับแนวทางอื่นที่ดูดียิ่งขึ้นโดยทั่วไปใช้ Plist เพื่อเปิดสคริปต์ในเวลาที่กำหนด

PS: ทั้งหมดนี้จะทำงานถ้าดิสก์ถูกเข้ารหัส? และฉันสามารถใช้ AppleScript เพื่อบันทึกผู้ใช้เมื่อบู๊ตด้วยการปิดหน้าจอ (หรือสุขุม) เพื่อให้ฉันสามารถเริ่มเปิดแอพบางตัวได้โดยไม่ต้องมีปัญหาด้านความปลอดภัย

ฉันขอความช่วยเหลือจากคุณและให้คำแนะนำเกี่ยวกับวิธีการใดดีที่สุด? ขอบคุณมากล่วงหน้า


มีความต้องการเฉพาะที่จะใช้ AppleScript ที่นี่หรือไม่? การวิ่งkextunloadในวันที่ / เวลาที่ระบุสามารถทำได้ผ่านlaunchd(หรือcron) โดยตรง
nohillside

ขอบคุณฉันจะอ่านเกี่ยวกับเรื่องนี้โดยทั่วไปฉันต้องการเรียกใช้คำสั่งเทอร์มินัลโดยเปิดหน้าจอ (ปิดลำโพงภายในล้างหน่วยความจำเปิดแอปบางอัน (ซึ่งฉันไม่คิดว่ามันจะทำงานกับสกรีนเซฟเวอร์)
Kevin

มันสร้างความแตกต่างอย่างมากเกี่ยวกับวิธีการไม่ว่าคุณต้องการเรียกใช้คำสั่งบางอย่างที่คุณมักจะเรียกใช้ในเทอร์มินัล (เช่นkextunload) หรือว่าคุณต้องการเรียกใช้บางแอปพลิเคชัน คุณอาจได้รับคำตอบที่ดีกว่าถ้าคุณแก้ไขคำถามเพื่อระบุความตั้งใจของคุณอย่างชัดเจนโดยไม่ต้องตั้งสมมติฐานเกี่ยวกับวิธีแก้ปัญหาและข้อเสียที่เป็นไปได้
nohillside

คำตอบ:


1

คุณสามารถเรียกใช้คำสั่งเมื่อเริ่มต้นด้วยโปรแกรมเรียกใช้งานที่มีลักษณะเช่นนี้ใน / Library / LaunchDaemons

<?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>Label</key>
    <string>NameYourTask</string>
    <key>ProgramArguments</key>
    <array>
    <string>CommandToRun</string>
    </array>
</dict>
</plist>

หากต้องการทำงานตามเวลาที่กำหนดให้ใช้สิ่งนี้ (ทำงานวันจันทร์เวลา 01.00 น.):

<?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>Label</key>
        <string>JobName</string>
        <key>ProgramArguments</key>
        <array>
            <string>CommandToRun</string>
        </array>
        <key>StartCalendarInterval</key>
        <dict>
            <key>Hour</key>
            <integer>1</integer>
            <key>Minute</key>
            <integer>0</integer>
            <key>Weekday</key>
            <integer>1</integer>
        </dict>
        <key>StandardOutPath</key>
            <string>LogFilePath</string>
        <key>StandardErrorPath</key>
            <string>LogFilePath</string>
    </dict>
</plist>

LaunchD มีตัวเลือกมากมายเกี่ยวกับวิธีที่งานสามารถรันได้ - สามารถดูและให้กระบวนการทำงานต่อไปได้เมื่อมีเครือข่ายหรือไฟล์อยู่ ฯลฯ

ดูเหมือนว่าคุณจะต้องกำหนดความต้องการของคุณแล้วหาวิธีการใช้งาน

ไม่อยู่ด้านล่างสตริงคำสั่งเป็นสตริงเดียว หากคุณต้องการส่งอาร์กิวเมนต์คุณสามารถทำได้ด้วยแท็กสตริงหลายรายการ

<array>
    <string>Command</string>
    <string>Arg1</string>
    <string>Arg2</string>
    <string>Arg3</string>
    <string>Arg4</string>
</array>

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