Mam uruchomiony skrypt, w którym polecenie, które próbuję uruchomić, jest błędne (najwyraźniej to nie jest słowo, jest teraz), narzeka na niewłaściwe użycie.
Konkretny błąd, który otrzymuję, to tekst użycia polecenia zrzucony do dziennika systemu. Z tego wnioskuję, że inne informacje (ścieżka do polecenia, czas itp.) W liście są analizowane poprawnie, tylko nie opcje polecenia.
Po użyciu polecenia mam ostatnią linię:
18/11/2013 09:30:00.101 com.apple.launchd.peruser.501: (fake.lable.seti[33833]) Exited with code: 1
Ale to po prostu oznacza „wyszedłem z błędem”.
Wiem, że uruchomione dzieli polecenie z jego opcji, a na stronie podręcznika mówi o ProgramArguments: „... Uwaga: wiele osób jest zdezorientowanych tym kluczem. Proszę bardzo uważnie przeczytać execvp (3)! ..”
No cóż, czytam execvp (3) i nie jestem mądrzejszy, więc proszę bardzo o cudowne pytania.
Zwykle uruchomienie polecenia z terminala wyglądałoby tak:
/Library/Application\ Support/BOINC\ Data/boinccmd --host localhost --passwd gobbledygook --project http://setiathome.berkeley.edu/ update
To działa na ucztę.
I w ten sposób podzieliłem go w sekcji Program / ProgramArguments mojej listy LaunchAgent:
<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>
(dla przypomnienia, pierwotnie miałem ścieżkę do boinccmd \ uciekł, ale to nie działa, uruchomiłem dla ciebie spacje na ścieżce)
Próbowałem dalej podzielić argumenty:
<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>
Ale to też nie działało.
Jak zawsze jestem pewien, że brakuje mi czegoś tak prostego.
Dzięki.
ODPOWIEDŹ:
Pierwszy wiersz ProgramArguments musi być ścieżką do programu. Właśnie to mnie potknęło i to prawdopodobnie oznaczało komentarz „... Proszę bardzo uważnie przeczytać! ..” :) Stwierdziłem również, że musiałem podzielić argumenty na części składowe. Kiedy wszystko to miałam na swoim miejscu, to wszystko działa jak urok. Dziękuję Ci bardzo.
<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>
Ostateczna edycja do łatwego zrozumienia wyjaśnienia, DLACZEGO to powinno być, zobacz wyjaśnienie SirPavlova.
~ W
<string>--host localhost</string>
pewno nie zadziała. Pamiętaj, że kiedy piszesz wiersz poleceń w powłoce, nie ma pojęcia, co jest częścią opcji i co to jest zwykły argument - po prostu dzieli się spacjami przed przekazaniem argumentów do uruchamianego programu. Może to również pomóc, jeśli chcesz pokazać dokładnie boinccmd
zgłaszany błąd .