Je commence à travailler avec LaunchD et je souhaite configurer un fichier de plat tel que lorsque j'insère une carte SD dans mon serveur Mac Mini Mac (avec Snow Leopard Server), je veux que un script shell soit exécuté (qui devrait copier tout les fichiers JPG, les renommer, etc.).
Donc, j'ai créé un fichier de plateau dans ~ / Bibliothèque / Landagents (voir ci-dessous pour son contenu - il devrait rechercher des modifications / volumes) et j'ai créé un script shell qui dit "Beep" - plus tard, il fera quelque chose de plus utile. p>
Le fichier de plis est enregistré auprès de LaunKCTL, et lorsque je l'exécute (launchtl Démarrer COM.PETERS.RUNWHENSDMOUNT), l'ordinateur dit bip quand une mémoire La carte est branchée et reste silencieuse lorsqu'il n'y a pas de carte mémoire. Donc, apparemment, le plat appelle le script shell, qui vérifie ensuite si la carte SD spécifique est là. Je suppose que cela prouve également qu'il n'y a pas de problème avec les autorisations de la carte SD. P>
Mais cela ne semble pas courir seul ??? N'importe quelle idée pourquoi ?? p>
Fichier de plateau: ~ / Bibliothèque / Laundangents / com.Peters.Runwhensdmount.Plist strong> P>
#!/bin/bash if [ -d "/Volumes/NIKON D40X" ]; then say beep fi
3 Réponses :
Après avoir créé un nouveau plat dans votre dossier ~ / Library / Laundagents, vous devez indiquer l'application Launchd à ce sujet. Les deux façons de base de faire sont:
Déconnectez-vous, puis connectez-vous dans. - Chaque fois que vous vous connectez, LaunchD numérisera le contenu de votre dossier ~ / Bibliothèque / Landagents et ajoutez n'importe quel plat qu'il y trouve. p> li>
Chargez le plat d'une ligne de commande terminale avec "LaunchCTL". La syntaxe de la commande est: p>
launchctl unload {Path-to-plist}
Un autre outil facile à charger et à décharger vos agents de lancement pourrait être iTunes.Apple. com / at / app / launchdControl / ID590231085? MT = 12
Je viens d'avoir un problème similaire avec le lancement automatique des services dans ~ ~ / bibliothèque / laurénagents em>, mais dans mon cas, aucun des services définis * .plist défini a commencé. P>
Le problème a évidemment été connecté au répertoire ~ ~ / bibliothèque / laurénagents em> et non aux fichiers de plat-circuit lui-même. La solution consistait à réinitialiser les autorisations de fichier. P>
hier je viens de trouver KnockRocket qui est une préférence Mac pour la gestion des services avec Launchd. Il est conscient de l'homebrew et ajoute une belle assurance-chômage pour la gestion des services de lanceur Homebrew. P>
Ceci peut ne pas vous aider avec des autorisations d'utilisateur incorrectes, mais elle est open source afin que vous puissiez Fourchette du projet a> et ajoutez le chèque d'autorisation comme une fonctionnalité. P> CHMOD 700 ~ / Bibliothèque / Launchagents Code>. P>
Mise à jour des utilisateurs d'homebrew: (2015-02-23) h3>
Bien que cela soit effectivement évident (et ce conseil m'a aidé à résoudre un problème, je pense), je n'ai pas pu trouver de chapitre et de couple indiquant cette exigence
En effet, c'est la première fois que je n'ai vu que quelqu'un suggère de réinitialiser les autorisations sur ~ / bibliothèque / laurénagents code> mais c'était exactement ce dont j'avais besoin. haut cinq i>
Moi aussi je suis incapable de trouver de la documentation, mais je peux confirmer que je devais définir des autorisations uniquement des utilisateurs sur non seulement des lanceurs de lancés, mais également le plist. Il n'y a même pas un message de journal sur la question.
Deux outils qui aident à la création et à la gestion des éléments de LaunchD sont les suivants: P>
Comme une note: Brett Terpstra (qui fait un groupe de superbes macs travaillant sur des choses comme NVALT A >) a récemment commenté dans son poste " Tâches de déclenchement À distance avec NOTILYUTIL et LANCHND "qu'il utilisait à Lingon, mais utilisait LaunkControl plus récemment. L'un d'entre eux vaut la peine d'être examiné. P>
Veuillez ré-poster le contenu de la plis afin que nous puissions le voir.
Paul, le code était dans le poste d'origine, il a été simplement formaté de manière incorrecte. J'ai mis à jour le formatage afin que les blocs de code apparaissent maintenant dans la question.