Cosa c'è che non va nella mia configurazione launchctl?


15

Sto provando a eseguire automaticamente SickBeard al login

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>

Quando corro launchctl com.sickbeard.sickbeard.plistmi dà il messaggio:

launchctl load com.sickbeard.sickbeard.plist launchctl: nessun plist è stato restituito per: com.sickbeard.sickbeard.plist launchctl: nessun plist è stato restituito per: com.sickbeard.sickbeard.plist non è stato trovato nulla da caricare


Presumo che volessi dire "launchctl load com.sickbeard.sickbeard.plist" nella tua riga di comando? Altrimenti otterrai un errore completamente diverso ;-)
binarybob,

Risposte:


37

Suppongo che i percorsi dello script Python e dei suoi parametri siano validi, altrimenti molto probabilmente vedresti errori nella Console.

L'ultima volta che ho visto quell'errore è stato perché nel plist c'erano caratteri spuri, ad esempio spazi extra, che causavano errori di sintassi e quindi impedivano il caricamento. Se corri plutil -lintsul tuo plist, questo verificherà la sintassi per te e riporterà anche facilmente la riga su cui si è verificato l'errore.

plutil -lint com.sickbeard.sickbeard.plist

Se ciò non aiuta, (OSX) Come avviare SickBeard all'accesso o avviare il thread OSX nei forum di Barbarossa ha un piano leggermente diverso dal tuo (Barbarossa in esecuzione /usr/localal contrario di /Applications- quindi potrebbe essere una cosa di autorizzazioni) e anche alcune persone con apparentemente lo stesso problema , come si


2
Grazie per l'aiuto. Sembra che copiare e incollare abbia portato un personaggio in più che è stato nascosto. Ho riscritto l'intero XML con nano e ha funzionato bene.
Joao Costa,

2
Grazie, non l'ho mai saputo plutil -lintprima. Molto maneggevole!
robmathers

Ho appena trovato questo post, ma controllare l'output della console aiuta molto anche con il debug.
Wing Tang Wong,

2

Come ho scoperto nel modo più difficile, è necessario eseguire il comando utilizzando sudooltre a passare l'intero percorso del .plistfile come segue (nel tuo caso):

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

Il percorso potrebbe essere diverso per te, ma è necessario individuare il file per scoprire la sua posizione e passarlo come ho citato al launchctlcomando.


2

Il messaggio nothing found to load indica a volte che la configurazione viene sostituita da un'altra configurazione. Forzare il caricamento utilizzando l'opzione "-w" durante l'utilizzo launchctl load or unload.

Se devi forzare il caricamento o lo scaricamento di un file plist, significa che hai una configurazione che sostituisce il plist. Questa sostituzione viene creata quando si utilizza "-w", altrimenti nessuna sostituzione verrà aggiunta al file delle sostituzioni. Per evitare questo caso, modificare il file seguente, cercare l'etichetta del lavoro che si desidera rimuovere la sostituzione, eliminare le righe necessarie:

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

Ad esempio, eliminare questa riga

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

allora potresti usare: launchctl load or unload /Library/LaunchDaemons/com.mydomain.myjob.plistsenza la necessità di "-w" o "-F", non dovresti avere il messaggionothing found to load


1

Potresti voler aggiungere il flag -F per forzare il launchctlcaricamento del .plist. Inoltre, assicurati che .plist sia nelle launchctlricerche dei percorsi . Se il tuo .plist è altrove, puoi anche aggiungere il flag -D e specificare il dominio. Dalla manpage:

-D domain
Cerca i file plist (5) che terminano con * .plist nel dominio indicato. I domini validi includono "system", "local", "network" e "all". Quando si fornisce un tipo di sessione, è disponibile un dominio aggiuntivo per l'uso chiamato "utente". Ad esempio, senza un tipo di sessione specificato, "-D system" verrebbe caricato dai file dell'elenco delle proprietà da / System / Library / LaunchDaemons. Con un tipo di sessione passato, verrebbe caricato da / System / Library / LaunchAgents.

Assicurati di rivedere a fondo tutte le informazioni contenute nella manpage: puoi davvero rovinare le cose se la tua chiamata non è configurata correttamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.