Come eseguo un'applicazione con launchd a intervalli regolari?

2

Ho un'app scritta in linguaggio AppleScripting che controlla se la S.M.A.R.T. lo stato è 'Verificato' se non lo è, allora mi mostrerà automaticamente un avviso di dialogo. Ma ho bisogno che funzioni ogni 30 minuti. Ho usato cron prima ma non funziona mai con l'estensione .app. Quindi, come posso eseguire l'app a intervalli regolari usando launchd?

    
posta bmike 31.10.2017 - 11:19
fonte

2 risposte

1

Usa oascript per chiamare il tuo ApplesScript.

$ oascript foobar.applescript

Nella tua plist la tua ProgramArguments definizione per avviare l'app sarebbe la seguente:

<key>ProgramArguments</key>
    <array>
        <string>osascript</string>
        <string>foobar.applescript</string>
    </array>

Per far funzionare il tuo oggetto, hai bisogno di una definizione StartInterval che prende un numero intero per il numero di secondi (1800 per 30 minuti) tra le esecuzioni.

<key>StartInterval</key>
<integer>1800</integer>

Un semplice ma plist funzionale apparirebbe come segue:

<?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>com.user.foobar.app</string>
   <key>ProgramArguments</key>
    <array>
        <string>osascript</string>
        <string>foobar.applescript</string>
    </array>
    <key>StartInterval</key>
    <integer>1800</integer>

</dict>
</plist>
    
risposta data 31.10.2017 - 11:48
fonte
0

Apple documenta tutto il necessario per scrivere un file XML creato a mano da salvare sul filesystem e caricare utilizzando launchtl load /path/to/xml ma la documentazione è molto densa, presuppone che tu abbia diversi giorni o settimane di esperienza e tempo per imparare.

Raccomando di iniziare con uno strumento come LaunchControl o Lingon per facilitare la tua curva di apprendimento e aggiungere una bella interfaccia per scegliere tempi come 30 minuti per l'intervallo di ripetizione invece di dover codificare 1800 secondi in il file xml.

Ecco cosa inserisci per i tuoi 30 minuti ed esegui solo quando l'utente ha effettuato il login nei vincoli nell'app LaunchControl

Ancheinquestocaso,puoifarloamano,superandoogniostacolochedovraiaffrontare(errorididebuggingallostandardouteerrorestandardquandolecosenonfunzionano,permessididebugeposizionidicartelle/file),maingenereèunadomandatroppoampiaquiperportarequalcunodaun'ideaall'implementazionefunzionante.

  • link

Io sceglierei gli strumenti facili a meno che tu non abbia il desiderio di padroneggiare diversi strumenti di scripting e il daemon di lancio e il sistema di controllo sotto controllo.

    
risposta data 31.10.2017 - 12:59
fonte

Leggi altre domande sui tag