2012-01-25 1 views
0

Je vais avoir un sacré coup de foudre pour programmer un script FileMaker en utilisant launchd sur OS X 10.4.11. (J'ai décrit mes débuts précoces à serverfault.) Au début, je pensais que le problème était que le script FileMaker ouvre une interface graphique, qui semble être verboten pour un LaunchDaemon. Ensuite, je l'ai fait un LaunchAgent à la place, qui est autorisé à utiliser les ressources de fenêtrage, et toujours pas aller.LaunchAgent ouvrant le script FileMaker

Voici une liste des choses qui ne font pas sens:

  1. Si vous utilisez launchctl pour démarrer la tâche après avoir chargé la main, puis tout fonctionne très bien.

    sudo launchctl start my.script.name

  2. Si vous sélectionnez un StartInterval qui est à quelques minutes à l'avenir (par opposition à plusieurs heures dans l'avenir), puis charger le .plist, tout fonctionne. (Je pensais au début que cela pouvait être lié à l'écran de veille - que lorsque le ss s'exécute, quelque chose est récupéré ou quelque chose, mais ça semble fonctionner si c'est programmé même après le démarrage de ss, tant que ça n'est pas trop loin dans le futur.)

  3. J'ai enveloppé l'invocation du programme FileMaker dans un script shell qui, en plus d'exécuter le programme FileMaker, a également écrit un horodatage dans un fichier journal. A la lecture de ce fichier journal, je peux vérifier que, oui, le script shell a bien été appelé par launchd au moment opportun. Ou du moins, presque, parce que:

  4. Le journal montre quelque chose d'étrange: si je planifie le script qui sera lancé à 20h08, je reçois deux exécutions, quelques secondes d'intervalle les uns des autres:

    [Tue Jan 24 20:07:57 CST 2012] Exécuter le script!

    [Tue Jan 24 20:08:00 CST 2012] Exécution de script!

Je suis un peu à la fin de ma corde ici - j'ai lu les pages de manuel pertinentes, d'Apple docs techniques, d'autres articles sur les sites StackExchange. J'ai vraiment fait mes devoirs autant que je le pouvais. N'importe qui qui pourrait m'aider dehors aurait un sérieux karma dirigé leur chemin. Pour le diable, encore une fois, voici le .plist avec un peu de cruft (définition XML, informations de journalisation) édité. (Rappelez-vous, cela fonctionne quand il est chargé manuellement, donc je sais que le plist lui-même est correct.)

<plist version="1.0"> 
<dict> 
    <key>Label</key> 
    <string>shane.useragent.launcher</string> 
    <key>ProgramArguments</key> 
    <array> 
      <string>/Users/shane/launchFM.sh</string> 
    </array> 
    <key>StartCalendarInterval</key> 
    <dict> 
      <key>Hour</key> 
      <integer>20</integer> 
      <key>Minute</key> 
      <integer>8</integer> 
    </dict> 
</dict> 
</plist> 
+0

Quelques réflexions:. 1: Pourrait FileMaker être occupé à faire autre chose lorsque vous 2: La base de données que vous voulez script reste ouverte et, si c'est le cas, est-ce toujours la base de données active dans FileMaker? 3: Avez-vous essayé d'automatiser avec les alertes iCal, à la place? Configuration FileMaker? FM Pro/Avancé? Serveur FM? Fichier partagé? Fichier utilisateur unique? – pft221

+0

Merci pour la réponse. # 1: Non, avec l'exception possible que les démarrages multiples l'amènent à s'interrompre et donc à tout gâcher. Je vais y réfléchir. # 2: l'exécution du script fait le bon choix base de données active.# 3: Je ne l'ai pas, mais cela peut arriver. Je voulais faire les choses avec la bénédiction d'Apple, mais je perds rapidement patience avec ça. # 4: FM Pro. Pour le reste, je ne suis pas sûr. Est-ce que vous vous attendez à des comportements différents dans ces différents cas, dans une situation où personne d'autre n'exécute de contenu FM? – shanusmagnus

+0

# 4: Si personne d'autre n'exécute FM alors pas généralement. – pft221

Répondre

0

Avez-vous d'utiliser launchd pour cela?

J'utilise construit dans l'installation Cron (via l'interface graphique CronniX pour ouvrir un fichier FileMaker locale qui exécute ensuite un script sur notre serveur FileMaker

+0

C'est un bon point. Laisse moi voir. – shanusmagnus