Çalışmaya çalıştığım komutun hata olduğu bir launchd betiğim var (görünüşe göre bu bir kelime değil, şimdi), yanlış kullanımdan şikayet ediyor.
Aldığım belirli bir hata, komutun kullanım günlüğüne sistem günlüğüne dökülmesidir. Bundan plist içindeki diğer bilgileri (komuta giden yol, zamanlama vb.) Doğru şekilde ayrıştırıyorum, sadece komutun seçeneklerini değil.
Komut kullanımından sonra son bir satırım var:
18/11/2013 09:30:00.101 com.apple.launchd.peruser.501: (fake.lable.seti[33833]) Exited with code: 1
Ama bu sadece "bir hata ile çıktım" anlamına geliyor.
Launchd komutunu seçeneklerinden ayırır ve man sayfasında ProgramArguments hakkında bilgi verir: "... Lütfen dikkat: birçok kişi bu anahtarla karıştırılır. Lütfen execvp (3) 'ü çok dikkatli okuyun! .."
Ben execvp (3) okudum ve ben daha akıllı değilim, bu yüzden size çok soruyorum.
Normalde, komutu terminalden çalıştırmak şu şekilde görünecektir:
/Library/Application\ Support/BOINC\ Data/boinccmd --host localhost --passwd gobbledygook --project http://setiathome.berkeley.edu/ update
Bu bir tedavi olur.
LaunchAgent plistimin Program / ProgramArguments bölümüne şu şekilde ayırdım:
<key>Program</key>
<string>/Library/Application Support/BOINC Data/boinccmd</string>
<key>ProgramArguments</key>
<array>
<string>--host localhost</string>
<string>--passwd gobbledygook</string>
<string>--project http://setiathome.berkeley.edu/ update</string>
</array>
(kayıt için, başlangıçta boinccmd \ 'den kaçtım, ama bu işe yaramadı, launchd sizin için yoldaki boşluklardan kaçıyor)
Argümanları daha fazla ayırmayı denedim:
<key>Program</key>
<string>/Library/Application Support/BOINC Data/boinccmd</string>
<key>ProgramArguments</key>
<array>
<string>--host</string>
<string>localhost</string>
<string>--passwd</string>
<string>gobbledygook</string>
<string>--project</string>
<string>http://setiathome.berkeley.edu/</string>
<string>update</string>
</array>
Ama bu da işe yaramadı.
Her zamanki gibi, bu kadar basit bir şeyi kaçırdığımdan eminim.
Teşekkürler.
CEVAP:
ProgramArguments öğesinin ilk satırı, programın yolu olmalıdır. Beni harekete geçiren şey buydu ve gerçekten de "... Lütfen dikkatlice okuyun! .." yorumuyla kastedilen buydu. Ben bütün bu yerde vardı her şey bir cazibesi çalışır. Çok teşekkür ederim.
<key>Program</key>
<string>/Library/Application Support/BOINC Data/boinccmd</string>
<key>ProgramArguments</key>
<array>
<string>/Library/Application Support/BOINC Data/boinccmd</string>
<string>--host</string>
<string>localhost</string>
<string>--passwd</string>
<string>gobbledygook</string>
<string>--project</string>
<string>http://setiathome.berkeley.edu/</string>
<string>update</string>
</array>
Bunun neden olması gerektiğine dair anlaşılması kolay bir açıklama için son bir düzenleme, SirPavlova'nın açıklamasına bakın.
~ W
<string>--host localhost</string>
kesinlikle olacak değil çalışır. Bir kabuğa bir komut satırı yazdığınızda, bir seçeneğin ne olduğu ve düzenli bir argümanın ne olduğu hakkında hiçbir fikri yoktur - argümanları çalıştırılan programa geçirmeden önce boşluklara ayrılır . Ayrıca, boinccmd
bildirilen hatayı tam olarak göstermeniz de yardımcı olabilir .