मेरे पास एक लॉन्च स्क्रिप्ट है जहां मैं जिस कमांड को चलाने का प्रयास कर रहा हूं वह गलत है (स्पष्ट रूप से यह एक शब्द नहीं है, यह अब है), अनुचित उपयोग की शिकायत।
विशिष्ट त्रुटि जो मुझे मिल रही है, वह सिस्टम लॉग में कमांड का उपयोग पाठ है। इससे मुझे पता चलता है कि प्लिस्ट में अन्य जानकारी (कमांड का रास्ता, टाइमिंग आदि) सही ढंग से पार्स की जा रही है, न कि कमांड के विकल्प।
कमांड के उपयोग के बाद मेरे पास एक अंतिम पंक्ति है:
18/11/2013 09:30:00.101 com.apple.launchd.peruser.501: (fake.lable.seti[33833]) Exited with code: 1
लेकिन इसका मतलब है कि "मैं एक त्रुटि के साथ बाहर निकला"।
मुझे पता है कि Launchd अपने विकल्पों में से कमांड को विभाजित करता है और मैन पेज में आपको ProgramArguments के बारे में बताता है: "... कृपया ध्यान दें: कई लोग इस कुंजी से भ्रमित हैं। कृपया निष्पादन (3) को बहुत ध्यान से पढ़ें! .."
वैसे मैं एग्ज़ाम्पल (3) पढ़ता हूँ और मैं समझदार नहीं हूँ, इसलिए मैं आपसे बहुत प्यार कर रहा हूँ।
आम तौर पर, टर्मिनल से कमांड चलाना इसे इस तरह देखना होगा:
/Library/Application\ Support/BOINC\ Data/boinccmd --host localhost --passwd gobbledygook --project http://setiathome.berkeley.edu/ update
यह एक इलाज का काम करता है।
और यह है कि मैं इसे अपने LaunchAgent plist के प्रोग्राम / 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 की व्याख्या देखें।
~ डब्ल्यू
<string>--host localhost</string>
निश्चित रूप से काम नहीं करेगा । याद रखें, जब आप एक कमांड लाइन को शेल में लिखते हैं, तो यह पता नहीं होता है कि एक विकल्प का हिस्सा क्या है और एक नियमित तर्क क्या है - यह प्रोग्राम चलाने के लिए तर्कों को पारित करने से पहले रिक्त स्थान पर विभाजित होता है । इसके अलावा, यदि आपको सटीक त्रुटि दिखाई दे रही है, तो यह मदद कर सकता boinccmd
है।