Plist non esegue AppleScript usando launchctl

0

Sto provando a programmare il mio AppleScript per l'esecuzione su intervalli di 60 secondi che eseguono due script di shell e sono apparso per configurare correttamente il plist quando vengono emessi due file (StandardErrorPath e StandardOutPath) dopo 60 secondi, ma non vedo i risultati dei miei script di shell che appaiono come hanno fatto quando ho eseguito lo script in Script Editor. Questo mi sembra significare che la sezione ProgramArguments non sta caricando il mio AppleScript. Qualcuno può indicarmi la giusta direzione? Dovrei aggiungere qualche tipo di registrazione al mio AppleScript per accedere al file di errore nel mio plist?

File AppleScript (lo script della shell viene eseguito correttamente in Script Editor e Terminal):

do shell script "cd /Users/user/Desktop/Projects/node/webmasters-cli && /Users/user/.nvm/versions/node/v4.3.2/bin/node app.js DesktopUSA"
do shell script "cd /Users/user/Desktop/Projects/node/webmasters-cli && /Users/user/.nvm/versions/node/v4.3.2/bin/node app.js DesktopAll"

plist (Situato in / Users / user / Library / LaunchAgents)

<?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>com.user.webmasters.daily.pull</string>
    <key>KeepAlive</key>
    <false/>
    <key>RunAtLoad</key>
    <false/>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/user/Desktop/Projects/node/webmasters-cli/daily-api-call.scpt</string>
    </array>
    <key>StartInterval</key>
    <integer>60</integer>
    <key>StandardErrorPath</key>
    <string>/tmp/webmastersDailyTest.err</string>
    <key>StandardOutPath</key>
    <string>/tmp/webmastersDailyTest.out</string>
</dict>
</plist>

Passaggi da caricare in launchctl:

1) Modificato nella directory

2) ha eseguito launchctl load com.user.webmasters.daily.pull.plist

3) Selezionato con launchctl list . apparso plist.

4) Selezionato /tmp e entrambi i file StandardErrorPath e StandardOutPath vengono creati dopo 60 secondi. Nessun valore nei file come previsto.

    
posta cphill 16.02.2017 - 17:01
fonte

1 risposta

1

Prova ad aggiungere /usr/bin/osascript come prima ProgramArguments . Ciò indicherà esplicitamente launchd di utilizzare osascript per eseguire il tuo script.

Approccio diretto

Devi utilizzare AppleScript per questo lavoro di avvio? In caso contrario, potresti evitare un livello di astrazione chiamando direttamente a node :

<key>WorkingDirectory</key>
<string>/Users/user/Desktop/Projects/node/webmasters-cli</string>
<key>ProgramArguments</key>
<array>
    <string>/Users/user/.nvm/versions/node/v4.3.2/bin/node</string>
    <string>app.js</string>
    <string>DesktopUSA</string>
</array>
    
risposta data 16.02.2017 - 17:10
fonte

Leggi altre domande sui tag