Quel est le problème avec ma configuration launchctl?

15

J'essaie d'exécuter automatiquement SickBeard à la connexion

python /Applications/Sick-Beard/Sickbeard.py

<?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.sickbeard.sickbeard</string>
  <key>ProgramArguments</key>
  <array>
       <string>/usr/bin/python</string>
       <string>/Applications/Sick-Beard/SickBeard.py</string>
       <string>-q</string>
       <string>-d</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

Quand je cours, launchctl com.sickbeard.sickbeard.plistcela me donne le message:

launchctl charger com.sickbeard.sickbeard.plist launchctl: aucune plist n'a été renvoyée pour: com.sickbeard.sickbeard.plist launchctl: aucune plist n'a été renvoyée pour: com.sickbeard.sickbeard.plist rien trouvé à charger

Joao Costa
la source
Je suppose que vous vouliez dire "launchctl load com.sickbeard.sickbeard.plist" dans votre ligne de commande? Sinon, vous obtiendriez une erreur complètement différente ;-)
binarybob

Réponses:

37

Je suppose que les chemins vers le script python et ses paramètres sont valides, sinon vous verriez très probablement des erreurs dans la console à la place.

La dernière fois que j'ai vu cette erreur, c'était parce qu'il y avait des caractères parasites dans le plist, par exemple des espaces supplémentaires, provoquant des erreurs de syntaxe et donc faisant échouer le chargement. Si vous exécutez plutil -lintsur votre plist, cela vérifiera la syntaxe pour vous et rapportera également facilement la ligne sur laquelle l'erreur s'est produite.

plutil -lint com.sickbeard.sickbeard.plist

Si cela ne vous aide pas, la procédure (OSX) Comment démarrer SickBeard à la connexion ou démarrer sur le thread OSX sur les forums de maladie a une liste légèrement différente de la vôtre (malade à partir de /usr/localpar opposition à /Applications- donc cela pourrait être une chose d'autorisation) et aussi certaines personnes ayant apparemment le même problème que vous

binarybob
la source
2
Merci de votre aide. Il semble que copier et coller a apporté un caractère supplémentaire qui était caché. J'ai retapé le XML entier avec nano et cela a très bien fonctionné.
Joao Costa
2
Merci, jamais connu plutil -lintauparavant. Très utile!
robmathers
Je viens de trouver cette publication, mais vérifier la sortie de la console aide également beaucoup au débogage.
Wing Tang Wong
2

Comme je l'ai découvert à la dure, vous devez exécuter la commande en utilisant sudoet en passant le chemin complet du .plistfichier comme suit (dans votre cas):

sudo launchctl load /Library/LaunchDaemons/com.sickbeard.sickbeard.plist

Le chemin peut être différent pour vous, mais vous devez localiser le fichier pour connaître son emplacement et le transmettre comme je l'ai indiqué à la launchctlcommande.

Johnny
la source
2

Le message nothing found to loadsignifie parfois que la configuration est remplacée par une autre configuration. Vous forcez le chargement en utilisant l'option "-w" lors de l'utilisation launchctl load or unload.

Si vous devez forcer le chargement ou le déchargement d'un fichier plist, cela signifie que vous avez une configuration qui remplace le plist. Ce remplacement est créé lorsque vous utilisez le "-w" sinon aucun remplacement ne sera ajouté au fichier de remplacement. Pour éviter ce cas, modifiez le fichier ci-dessous, recherchez le libellé de travail dont vous souhaitez supprimer le remplacement, supprimez les lignes nécessaires:

pico /var/db/launchd.db/com.apple.launchd/overrides.plist

Par exemple, supprimez cette ligne

<key>com.mydomain.myjob</key>
<dict>
        <key>Disabled</key>
        <true/>
</dict>

alors vous pourriez utiliser: launchctl load or unload /Library/LaunchDaemons/com.mydomain.myjob.plistsans avoir besoin de "-w" ou "-F", vous ne devriez pas avoir le messagenothing found to load

Sylvain Rayé
la source
1

Vous souhaiterez peut-être ajouter l'indicateur -F pour forcer launchctlle chargement du .plist. Assurez-vous également que le .plist se trouve dans les cheminslaunchctl recherches de . Si votre .plist est ailleurs, vous pouvez également ajouter l'indicateur -D et spécifier le domaine. Depuis la page de manuel:

-D domaine
Recherchez les fichiers plist (5) se terminant par * .plist dans le domaine indiqué. Les domaines valides incluent «système», «local», «réseau» et «tous». Lors de la fourniture d'un type de session, un domaine supplémentaire est disponible pour une utilisation appelée «utilisateur». Par exemple, sans type de session donné, "-D système" se chargerait à partir des fichiers de liste de propriétés depuis / System / Library / LaunchDaemons. Avec un type de session passé, il se chargerait depuis / System / Library / LaunchAgents.

Assurez-vous de lire attentivement toutes les informations contenues dans la page de manuel - vous pouvez vraiment détruire des choses si votre appel n'est pas correctement configuré.

soxman
la source