私が実行しようとしているコマンドがエラーになっているlaunchdスクリプトがあります(明らかにそれは言葉ではありません、現在です)、不適切な使用法を訴えています。
私が取得している特定のエラーは、システムログにダンプされたコマンドの使用テキストです。これから、コマンドのオプションではなく、plistの他の情報(コマンドへのパス、タイミングなど)が正しく解析されていると推測します。
コマンドの使用後、最後の1行があります。
18/11/2013 09:30:00.101 com.apple.launchd.peruser.501: (fake.lable.seti[33833]) Exited with code: 1
しかし、それは「エラーで終了しました」という意味です。
launchdがコマンドをオプションから分割し、manページで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へのパスを\エスケープしましたが、それは機能しません、あなたのためにパス内のスペースをエスケープします)
引数をさらに分割してみました:
<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
報告している正確なエラーを表示する場合にも役立ちます。