2009-12-14 5 views
2

J'essaie de charger mon daemon-app avec cette commande launchctl load /Library/LaunchDaemons/myPlistFileName Cela fonctionne très bien, mais seulement lorsque mon utilisateur est connecté sur le système.Comment charger les démons à l'échelle du système sur MacOS

Comment puis-je charger mon app-deamon, qui restera chargé sans aucun utilisateur connecté au système (comme les services Windows) ??

La commande sudo launchctl load /Library/LaunchDaemons/myPlistFileName me donner une erreur ->Rien à charger

Quelle est la bonne façon de le faire?


EDIT: Mon Plist Dossier

<key>Label</key> 
<string>com.myCompany.myApplication</string> 
<key>ProgramArguments</key> 
<array> 
    <string>open</string> 
    <string>-g</string> 
    <string>/Applications/myAppDir/myApplication.app</string> 
</array> 
<key>UserName</key> 
<string>root</string> 
<key>GroupName</key> 
<string>wheel</string> 
<key>KeepAlive</key> 
<true/> 
<key>OnDemand</key> 
<false/> 

Actuellement, il est donc: au système démarre mon démon commence par root-autorisations. Après je suis connecté avec mon compte utilisateur, le redémarrage démon processus et mon utilisateur est le nouveau propriétaire du processus

Répondre

3

En utilisant la commande « sudo launchctl charge < nom de fichier-plist->; sudo launchctl commencer < emploi nom > »ou, sur les nouvelles versions de launchctl, "sudo launchctl soumettre -l < étiquette >-<commande> [<arg0> ... <argN>]" est le chemin à parcourir.

Il est difficile de diagnostiquer pourquoi votre commande "sudo launchctl" a échoué sans voir réellement le PLIST, mais vous devez vous assurer que les permissions pour le PLIST sont lisibles pour tout le monde (mais seulement par root: wheel ou root: admin), vous devez être sûr que les champs "UserName" et "GroupName" ont été donnés, vous devez vous assurer que "Program" donne un chemin absolu au programme en question (et ne dépend pas, par exemple, de l'utilisateur paramètre de la variable d'environnement PATH) et les champs "WorkingDirectory" et "EnvironmentVariables" doivent être correctement définis, le cas échéant.

Voir aussi: man launchd.plist

EDIT:
Vous pouvez également essayer de lancer le « arrêt » et « décharger » les commandes avant de tenter de faire la commande « sudo ... la charge ». Maintenant que vous avez téléchargé votre fichier PLIST, il est clair quel est votre problème ... vous ne pouvez pas utiliser la commande open lorsque vous utilisez un autre utilisateur. Voir running OS X GUI app as root. De plus, les clés KeepAlive et OnDemand sont, j'en suis sûr, gratuites. Je pense que ceux-ci peuvent être supprimés.

+0

J'ai ajouté mon fichier de configuration. J'ai aussi essayé d'exécuter les commandes stop et déchargement, avant de charger mon plist avec "launchctl" – Nobik

+0

Hier j'ai trouvé exactement la même solution ailleurs. Maintenant ça marche bien :) Merci. – Nobik

Questions connexes