Was ist los mit meiner launchctl-Konfiguration?

15

Ich versuche, SickBeard beim Anmelden automatisch auszuführen

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>

Wenn ich renne launchctl com.sickbeard.sickbeard.plist, bekomme ich die Nachricht:

launchctl load com.sickbeard.sickbeard.plist launchctl: Es wurde keine Liste zurückgegeben für: com.sickbeard.sickbeard.plist launchctl: Es wurde keine Liste zurückgegeben für: com.sickbeard.sickbeard.plist Es wurde nichts zum Laden gefunden

Joao Costa
quelle
Ich nehme an, Sie meinten "launchctl load com.sickbeard.sickbeard.plist" in Ihrer Befehlszeile? Sonst bekommst du einen ganz anderen Fehler ;-)
binarybob

Antworten:

37

Ich gehe davon aus, dass die Pfade zum Python-Skript und dessen Parameter gültig sind, da sonst wahrscheinlich Fehler in der Konsole auftreten.

Das letzte Mal, als ich diesen Fehler sah, war, dass die Plist falsche Zeichen enthielt, z. B. zusätzliche Leerzeichen, die zu Syntaxfehlern führten und daher nicht geladen werden konnten. Wenn Sie plutil -lintauf Ihrer Plist ausgeführt werden, wird die Syntax für Sie überprüft und die Zeile, in der der Fehler aufgetreten ist, wird problemlos zurückgemeldet.

plutil -lint com.sickbeard.sickbeard.plist

Wenn das nicht hilft, hat der (OSX) So starten Sie SickBeard beim Anmelden oder Booten unter OSX in den sickbeard-Foren eine etwas andere Liste /usr/localals der Ihre (sickbeard läuft ab im Gegensatz zu /Applications- es könnte also eine Berechtigungssache sein) und auch einige Leute mit scheinbar dem gleichen Problem wie Sie

binarybob
quelle
2
Danke für deine Hilfe. Es scheint, dass das Kopieren und Einfügen ein zusätzliches Zeichen brachte, das verborgen war. Ich habe das gesamte XML mit Nano neu getippt und es hat einwandfrei funktioniert.
Joao Costa
2
Danke, ich wusste es noch nie plutil -lint. Sehr praktisch!
Robmathers
Ich habe gerade diesen Beitrag gefunden, aber das Auschecken der Konsolenausgabe hilft auch beim Debuggen.
Wing Tang Wong
2

Wie ich auf die harte Tour entdeckt habe, müssen Sie den Befehl unter Verwendung sudodes vollständigen Pfads der .plistDatei wie folgt ausführen (in Ihrem Fall):

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

Der Pfad kann für Sie unterschiedlich sein, aber Sie müssen die Datei suchen, um ihren Speicherort zu ermitteln und sie gemäß den launchctlAnweisungen des Befehls weiterzuleiten .

Johnny
quelle
2

Die Meldung nothing found to loadbedeutet manchmal, dass die Konfiguration von einer anderen Konfiguration überschrieben wird. Sie erzwingen das Laden mit der Option "-w" launchctl load or unload.

Wenn Sie das Laden oder Entladen einer plist-Datei erzwingen müssen, bedeutet dies, dass Sie eine Konfiguration haben, die die plist überschreibt. Diese Überschreibung wird erstellt, wenn Sie "-w" verwenden. Andernfalls wird der Überschreibungsdatei keine Überschreibung hinzugefügt. Um diesen Fall zu vermeiden, bearbeiten Sie die folgende Datei, durchsuchen Sie die Auftragsbezeichnung, deren Überschreibung Sie entfernen möchten, und löschen Sie die erforderlichen Zeilen:

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

Löschen Sie beispielsweise diese Zeile

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

dann könnten Sie verwenden: launchctl load or unload /Library/LaunchDaemons/com.mydomain.myjob.plistohne die Notwendigkeit von "-w" oder "-F" sollten Sie die Nachricht nicht habennothing found to load

Sylvain Rayé
quelle
1

Möglicherweise möchten Sie das -F-Flag hinzufügen, um launchctldas Laden der .plist zu erzwingen . Stellen Sie außerdem sicher, dass sich die .plist in der Pfadsuche befindet launchctl. Befindet sich Ihre .plist an einer anderen Stelle, können Sie auch das Flag -D hinzufügen und die Domain angeben. Aus der Manpage:

-D Domain
Suchen Sie in der angegebenen Domain nach plist (5) -Dateien, die auf * .plist enden. Gültige Domänen sind "system", "local", "network" und "all". Bei der Angabe eines Sitzungstyps steht eine zusätzliche Domäne mit dem Namen "Benutzer" zur Verfügung. Ohne den angegebenen Sitzungstyp würde beispielsweise "-D System" aus den Eigenschaftenlistendateien aus / System / Library / LaunchDaemons geladen. Wenn ein Sitzungstyp übergeben wird, wird er aus / System / Library / LaunchAgents geladen.

Stellen Sie sicher, dass Sie alle in der Hilfeseite enthaltenen Informationen gründlich prüfen. Sie können wirklich Probleme verursachen, wenn Ihr Anruf nicht richtig konfiguriert ist.

soxman
quelle