Apa yang salah dengan konfigurasi launchctl saya?

15

Saya mencoba menjalankan SickBeard secara otomatis saat 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>

Ketika saya menjalankannya launchctl com.sickbeard.sickbeard.plistmemberi saya pesan:

launchctl memuat com.sickbeard.sickbeard.plist launchctl: tidak ada plist yang dikembalikan untuk: com.sickbeard.sickbeard.plist launchctl: tidak ada plist yang dikembalikan untuk: com.sickbeard.sickbeard.plist tidak ada yang ditemukan untuk dimuat

Joao Costa
sumber
Saya berasumsi Anda berarti "launchctl memuat com.sickbeard.sickbeard.plist" di baris perintah Anda? Kalau tidak, Anda akan mendapatkan kesalahan yang sama sekali berbeda ;-)
binarybob

Jawaban:

37

Saya berasumsi jalur ke skrip python dan parameternya valid, jika tidak, Anda kemungkinan besar akan melihat kesalahan di Konsol.

Terakhir kali saya melihat kesalahan itu adalah karena ada karakter palsu dalam daftar, misalnya spasi tambahan, menyebabkan kesalahan sintaksis dan karenanya membuatnya gagal dimuat. Jika Anda menjalankan plutil -lintplist Anda, ini akan memeriksa sintaks untuk Anda dan juga dengan mudah melaporkan kembali baris di mana kesalahan terjadi.

plutil -lint com.sickbeard.sickbeard.plist

Jika itu tidak membantu, (OSX) Cara Memulai SickBeard saat Login atau boot pada utas OSX di forum sickbeard memiliki papan yang sedikit berbeda dengan milik Anda (sickbeard berjalan dari yang /usr/localberlawanan dengan /Applications- sehingga bisa menjadi hal izin) dan juga beberapa orang dengan masalah yang tampaknya sama dengan Anda

binarybob
sumber
2
Terima kasih untuk bantuannya. Tampaknya menyalin dan menempel membawa karakter tambahan yang disembunyikan. Saya telah mengetik ulang seluruh XML dengan nano dan itu berfungsi dengan baik.
Joao Costa
2
Terima kasih, tidak pernah tahu plutil -lintsebelumnya. Sangat berguna!
Robmathers
Baru saja menemukan posting ini, tetapi memeriksa keluaran Konsol membantu banyak dengan debugging juga.
Wing Tang Wong
2

Ketika saya menemukan cara yang sulit, Anda harus menjalankan perintah menggunakan sudoserta melewati path lengkap .plistfile sebagai berikut (dalam kasus Anda):

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

Path mungkin berbeda untuk Anda, tetapi Anda harus mencari file untuk mengetahui lokasi dan meneruskannya seperti yang saya kutip pada launchctlperintah.

Johnny
sumber
2

Pesan itu nothing found to loadkadang-kadang berarti bahwa konfigurasi ditimpa oleh konfigurasi lain. Anda memaksa pemuatan dengan menggunakan opsi "-w" saat menggunakan launchctl load or unload.

Jika Anda harus memaksa memuat atau membongkar file plist, itu berarti Anda memiliki konfigurasi yang mengesampingkan plist. Override ini dibuat ketika Anda menggunakan "-w" jika tidak maka override tidak akan ditambahkan ke file override. Untuk mencegah kasus ini, edit file di bawah ini, cari label pekerjaan yang ingin Anda hapus override, hapus baris yang diperlukan:

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

Misalnya, hapus baris ini

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

maka Anda dapat menggunakan: launchctl load or unload /Library/LaunchDaemons/com.mydomain.myjob.plisttanpa perlu "-w" atau "-F", Anda seharusnya tidak memiliki pesannothing found to load

Sylvain Rayé
sumber
1

Anda mungkin ingin menambahkan flag -F untuk memaksa launchctlmemuat .plist. Juga, pastikan bahwa .plist ada di jalur launchctlpencarian. Jika .plist Anda ada di tempat lain, Anda juga dapat menambahkan tanda -D dan menentukan domain. Dari halaman manual:

-D domain
Cari file plist (5) yang diakhiri dengan * .plist di domain yang diberikan. Domain yang valid meliputi "sistem," "lokal," "jaringan" dan "semua." Saat memberikan jenis sesi, domain tambahan tersedia untuk digunakan yang disebut "pengguna." Misalnya, tanpa jenis sesi yang diberikan, "-D system" akan memuat dari file daftar properti dari / System / Library / LaunchDaemons. Dengan jenis sesi berlalu, itu akan memuat dari / System / Library / LaunchAgents.

Pastikan Anda benar-benar meninjau semua informasi yang terkandung dalam halaman manual - Anda benar-benar dapat merusak sesuatu jika panggilan Anda tidak dikonfigurasi dengan benar.

soxman
sumber