Saya memiliki skrip launchd di mana perintah yang saya coba jalankan salah (ternyata itu bukan kata, sekarang), mengeluhkan penggunaan yang tidak benar.
Kesalahan spesifik yang saya dapatkan adalah teks penggunaan perintah dibuang ke log sistem. Dari sini saya menyimpulkan info lain (path ke perintah, waktu dll) dalam daftar sedang diurai dengan benar, hanya saja bukan opsi perintah.
Setelah penggunaan perintah saya memiliki satu baris terakhir:
18/11/2013 09:30:00.101 com.apple.launchd.peruser.501: (fake.lable.seti[33833]) Exited with code: 1
Tapi itu hanya berarti "Saya keluar dengan kesalahan".
Saya tahu launchd memisahkan perintah dari opsinya dan di halaman manual memberi tahu Anda tentang ProgramArguments: "... Harap dicatat: banyak orang bingung dengan kunci ini. Harap baca execvp (3) dengan sangat hati-hati! .."
Yah saya membaca execvp (3) dan saya bukan orang yang lebih bijak, jadi saya banyak bertanya kepada Anda.
Biasanya, menjalankan perintah dari terminal akan terlihat seperti ini:
/Library/Application\ Support/BOINC\ Data/boinccmd --host localhost --passwd gobbledygook --project http://setiathome.berkeley.edu/ update
Ini berhasil.
Dan ini adalah bagaimana saya membaginya di bagian Program / ProgramArguments dari daftar LaunchAgent saya:
<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>
(sebagai catatan, saya awalnya memiliki jalan menuju boinccmd \ lolos, tetapi itu tidak berhasil, launchd lolos dari ruang di jalur untuk Anda)
Saya sudah mencoba memisahkan argumen ke bawah:
<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>
Tapi sepertinya itu juga tidak berhasil.
Seperti biasa, saya sangat yakin saya kehilangan sesuatu yang begitu sederhana.
Terima kasih.
MENJAWAB:
Baris pertama dari ProgramArguments perlu menjadi jalur ke program. Inilah yang membuat saya tersandung dan memang apa yang mungkin dimaksud dengan komentar "... Mohon baca dengan saksama! .." :) Saya juga menemukan saya harus membagi argumen menjadi beberapa bagian komponen. Ketika saya memiliki semua itu di tempat semuanya bekerja pesona. Terima kasih banyak.
<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>
Hasil edit terakhir untuk penjelasan yang mudah dimengerti MENGAPA ini seharusnya, lihat penjelasan SirPavlova.
~ W
<string>--host localhost</string>
pasti tidak akan berfungsi. Ingat, ketika Anda menulis baris perintah ke shell, ia tidak tahu apa yang menjadi bagian dari opsi dan apa argumen reguler - hanya terpecah pada spasi sebelum meneruskan argumen ke program yang sedang dijalankan. Selain itu, mungkin membantu jika Anda menunjukkan kesalahan yang boinccmd
dilaporkan.