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

дякую, я прочитаю про це, в основному я хочу запустити якусь команду терміналу із заставкою (вимкнути внутрішній динамік, очистити пам'ять, відкрити якусь програму (що, на мою думку, це не може працювати із заставкою)
Кевін

Що стосується підходу, це велика різниця в тому, чи хочете ви запускати деякі команди, які зазвичай виконуєте в терміналі (наприклад kextunload), чи хочете запускати деякі програми. Ви, мабуть, отримаєте кращі відповіді, якщо ви відредагуєте своє запитання, щоб чітко висловити свій намір, не роблячи припущень щодо можливих рішень та їх недоліків.
nohillside

Відповіді:


1

Ви можете запустити команду при запуску зі запущеним плістом, виглядаючи приблизно так, в / Бібліотека / 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>

Щоб запуститись у визначений час, використовуйте щось подібне (це працює в понеділок, 1 ранку):

<?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>

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