실행하려고하는 명령이 잘못되어 (잘못된 단어는 아니지만 지금은 잘못된) 스크립트가 실행되어 부적절한 사용법에 대해 불평합니다.
내가 얻는 특정 오류는 명령의 사용 텍스트가 시스템 로그에 덤프 된 것입니다. 이것으로부터 plist의 다른 정보 (명령에 대한 경로, 타이밍 등)가 명령의 옵션이 아니라 올바르게 구문 분석되고 있음을 추측합니다.
명령 사용 후 마지막 줄이 하나 있습니다.
18/11/2013 09:30:00.101 com.apple.launchd.peruser.501: (fake.lable.seti[33833]) Exited with code: 1
그러나 그것은 단지 "오류와 함께 종료되었습니다"를 의미합니다.
나는 launchd가 명령을 옵션에서 분리하고 매뉴얼 페이지에서 ProgramArguments에 대해 알려줍니다.
글쎄, 나는 execvp (3)을 읽고 나는 더 현명한 사람이 아니므로, 당신에게 사랑스러운 많은 것을 요구하고 있습니다.
일반적으로 터미널에서 명령을 실행하면 다음과 같습니다.
/Library/Application\ Support/BOINC\ Data/boinccmd --host localhost --passwd gobbledygook --project http://setiathome.berkeley.edu/ update
이것은 치료를합니다.
그리고 이것이 LaunchAgent plist의 Program / ProgramArguments 섹션에서 나누는 방법입니다.
<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>
(기록을 위해 원래 boinccmd \ escaped 경로가 있었지만 작동하지 않아 경로에서 탈출 공간이 시작되었습니다.)
나는 논쟁을 더 세분화하려고 노력했다.
<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>
그러나 그것은 작동하지 않는 것 같습니다.
그 어느 때보 다, 나는 아주 간단한 것을 놓치고 있다고 확신합니다.
감사.
대답:
ProgramArguments의 첫 번째 줄은 프로그램의 경로 여야합니다. 이것은 저를 트립하고 실제로 "... 매우주의 깊게 읽어주십시오! .."라는 주석의 의미입니다. 내가 그 모든 것을 제자리에 두었을 때 모든 것이 매력을 발휘합니다. 대단히 감사합니다.
<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>
이것이 왜 필요한지에 대한 이해를 돕기 위해 마지막 편집은 SirPavlova의 설명을 참조하십시오.
~ W
<string>--host localhost</string>
는 확실히 작동 하지 않습니다 . 쉘에 명령 행을 작성할 때 옵션의 일부와 일반 인수가 무엇인지 모릅니다 . 인수를 실행중인 프로그램에 전달 하기 전에 공백으로 분할됩니다 . 또한 boinccmd
보고 하는 정확한 오류를 표시하는 것이 도움이 될 수 있습니다 .