0 votes

La liste ne s'exécute pas AppleScript en utilisant launchctl

J'essaie de programmer l'exécution d'un AppleScript à 60 secondes d'intervalle qui exécute deux scripts shell et je semble avoir configuré correctement ma plist pour que deux fichiers soient produits (StandardErrorPath et StandardOutPath) après 60 secondes, mais je ne vois pas les résultats de mes scripts shell apparaître comme ils le faisaient lorsque j'exécutais le scripts dans scripts Editor. Pour moi, cela signifie que la section ProgramArguments ne charge pas mon AppleScript. Quelqu'un peut-il m'indiquer la bonne direction ? Dois-je ajouter un type de journalisation à mon AppleScript pour qu'il soit enregistré dans le fichier d'erreur de ma plist ?

Fichier AppleScript (Shell script fonctionne correctement dans script Editor et 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 (Situé dans /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>

Etapes à charger dans launchctl :

1) Changement de répertoire

2) a couru launchctl load com.user.webmasters.daily.pull.plist

3) Vérifié auprès de launchctl list . plist est apparu.

4) Vérifié /tmp et les fichiers StandardErrorPath et StandardOutPath sont créés après 60 secondes. Aucune valeur dans les fichiers, comme prévu.

1voto

Graham Miln Points 39606

Essayez d'ajouter /usr/bin/osascript en tant que premier ProgramArguments . Cela permettra d'indiquer explicitement à launchd pour utiliser le osascript pour exécuter votre script.

Approche directe

Avez-vous besoin d'utiliser AppleScript pour cette tâche launchd ? Si ce n'est pas le cas, vous pouvez éviter un niveau d'abstraction en faisant appel directement à 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>

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X