Co jest nie tak z moją konfiguracją launchctl?

15

Próbuję automatycznie uruchomić SickBeard po zalogowaniu

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>

Po uruchomieniu wyświetla launchctl com.sickbeard.sickbeard.plistmi komunikat:

launchctl load com.sickbeard.sickbeard.plist launchctl: nie zwrócono listy dla: com.sickbeard.sickbeard.plist launchctl: nie zwrócono listy dla: com.sickbeard.sickbeard.plist nic nie można załadować

Joao Costa
źródło
Zakładam, że miałeś na myśli „launchctl load com.sickbeard.sickbeard.plist” w linii poleceń? W przeciwnym razie wystąpiłby zupełnie inny błąd ;-)
binarybob

Odpowiedzi:

37

Zakładam, że ścieżki do skryptu python i jego parametry są prawidłowe, w przeciwnym razie najprawdopodobniej zobaczysz błędy w konsoli.

Ostatni raz widziałem ten błąd, ponieważ na liście znajdowały się fałszywe znaki, np. Dodatkowe spacje, powodujące błędy składniowe i dlatego nie ładowało się. Jeśli uruchomisz plutil -lintswój plist, sprawdzi to składnię, a także zręcznie zgłosi wiersz, w którym wystąpił błąd.

plutil -lint com.sickbeard.sickbeard.plist

Jeśli to nie pomoże, (OSX) Jak uruchomić SickBeard przy logowaniu lub uruchomić się w wątku OSX na forach chorych, ma nieco inną listę niż twoja (choroba biegnie /usr/localw przeciwieństwie do /Applications- więc może to być kwestia uprawnień) i także niektórzy ludzie z pozornie takim samym problemem jak ty

binarybob
źródło
2
Dziękuję za pomoc Wygląda na to, że kopiowanie i wklejanie przyniosło dodatkową postać, która była ukryta. Ponownie przepisałem cały XML z nano i wszystko działało dobrze.
Joao Costa
2
Dzięki, nigdy plutil -lintwcześniej o tym nie wiedziałem . Bardzo przydatny!
robmathers
Właśnie znalazłem ten wpis, ale sprawdzenie danych wyjściowych konsoli pomaga również przy debugowaniu.
Wing Tang Wong
2

Jak odkryłem na własnej skórze, musisz wykonać polecenie, podając sudorównież pełną ścieżkę .plistpliku w następujący sposób (w twoim przypadku):

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

Ścieżka może być dla Ciebie inna, ale musisz zlokalizować plik, aby znaleźć jego lokalizację i przekazać go tak, jak zacytowałem launchctlpolecenie.

Jasio
źródło
2

Komunikat nothing found to loadczasami oznacza, że ​​konfiguracja jest zastępowana przez inną konfigurację. Wymuszasz ładowanie przy użyciu opcji „-w” podczas używania launchctl load or unload.

Jeśli musisz wymusić ładowanie lub zwalnianie pliku plist, oznacza to, że masz konfigurację, która przesłania plist. To przesłonięcie jest tworzone, gdy użyjesz „-w”, w przeciwnym razie żadne przesłonięcie nie zostanie dodane do pliku przesłonięć. Aby temu zapobiec, edytuj poniższy plik, wyszukaj etykietę zadania, którą chcesz usunąć zastąpienia, usuń niezbędne wiersze:

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

Na przykład usuń ten wiersz

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

wtedy możesz użyć: launchctl load or unload /Library/LaunchDaemons/com.mydomain.myjob.plistbez potrzeby użycia „-w” lub „-F”, nie powinieneś mieć wiadomościnothing found to load

Sylvain Rayé
źródło
1

Możesz dodać flagę -F, aby wymusić launchctlzaładowanie .plist. Upewnij się również, że .plist znajduje się w launchctlwyszukiwaniu ścieżek . Jeśli .plist jest gdzie indziej, możesz również dodać flagę -D i określić domenę. Z strony podręcznika:

-D domena
Poszukaj plików plist (5) kończących się na * .plist w podanej domenie. Prawidłowe domeny to „system”, „lokalny”, „sieć” i „wszystkie”. Podając typ sesji, dostępna jest dodatkowa domena o nazwie „użytkownik”. Na przykład, bez podanego typu sesji, „-D system” ładowałby się z plików listy właściwości z / System / Library / LaunchDaemons. Po podaniu typu sesji ładowałby się z / System / Library / LaunchAgents.

Upewnij się, że dokładnie przejrzałeś wszystkie informacje zawarte na stronie podręcznika - możesz naprawdę zniszczyć wszystko, jeśli twoje połączenie nie jest odpowiednio skonfigurowane.

soxman
źródło