2011-06-13 4 views
9

मेरे पास होमब्री से कुछ लॉन्च स्क्रिप्ट हैं। हालांकि मैं उन्हें मैन्युअल रूप से चलाने के लिए जब मैं अपने कंप्यूटर को पुनः आरंभ है:मैं लॉन्चड स्क्रिप्ट को कैसे डिबग कर सकता हूं जो स्टार्टअप पर नहीं चलता है?

launchctl load -w ~/Library/LaunchAgents/com.mysql.mysqld.plist 

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>KeepAlive</key> 
    <true/> 
    <key>Label</key> 
    <string>com.mysql.mysqld</string> 
    <key>Program</key> 
    <string>/Users/dash/.local/Cellar/mysql/5.1.49/bin/mysqld_safe</string> 
    <key>RunAtLoad</key> 
    <true/> 
    <key>UserName</key> 
    <string>dash</string> 
    <key>WorkingDirectory</key> 
    <string>/Users/dash/.local/var</string> 
</dict> 
</plist> 

मुझे लगा कि यह स्टार्टअप पर होना चाहिए। मैं क्या खो रहा हूँ?

+0

मुझे नहीं लगता कि इसका कोई असर होगा (इसलिए, मैं इसे उत्तर नहीं दे रहा हूं), लेकिन परीक्षण के लिए "-w" ध्वज के बिना इसे चलाने का प्रयास करें (यानी "लॉन्चक्टल लोड ~/लाइब्रेरी/लॉन्चएजेंट्स /com.mysql.mysqld.plist ") और फिर पुनरारंभ करें। या, शायद प्लेस्ट के लिए पूर्ण फ़ाइल पथ (उदा। /Users/{you}/Library/LaunchAgents/com.mysql.mysqld.plist) आज़माएं। बस अनुमान लगाओ। –

+1

वास्तव में कोई जवाब नहीं है, लेकिन मुझे यकीन है कि [लॉन्च कंट्रोल] (http://www.soma-zone.com/LaunchControl) आपको बताएगा क्यों। – LCC

+0

मेरे [उत्तर] (http://stackoverflow.com/a/15820488/711807) को इसी तरह के मुद्दे पर देखें। –

उत्तर

2

एक संभावना: अपने उपयोगकर्ता के लिए फ़ाइल

/private/var/db/launchd.db/ 

और ठीक: निर्देशिका में देखो "com.apple.launchd.peruser ###।"। कि खोलें और अगर वहाँ की तरह एक प्रविष्टि है देखें:

<key>com.mysql.mysqld.plist</key> 
<dict> 
    <key>Disabled</key> 
    <true/> 
</dict> 

यदि हां, तो <false/> के लिए यह सेट करके देखें। एक ही चीज़ को देखने के लिए एक और फाइल है:

/private/var/db/launchd.db/com.apple.launchd/overrides.plist 
+0

यह आशाजनक लग रहा था, लेकिन हां यह '' –

+0

शायद सभी को एक साथ काटने का प्रयास कर रहा था? मैं नहीं देखता कि इससे कोई फर्क नहीं पड़ता है, लेकिन मैं स्ट्रॉ पर पकड़ रहा हूं। –

0

इसे नाम बदलने का प्रयास करें।

~/Library/LaunchAgents/com.mysql.mysqld2.plist 

और करने के लिए plist में लेबल अनुभाग:: के लिए फ़ाइल नाम बदलें

<key>Label</key> 
<string>com.mysql.mysqld2</string> 

आप एक बैकअप प्रतिलिपि को सहेजते हैं, बनाने के अपने ~/Library/LaunchAgents/निर्देशिका से बाहर ले जाने के लिए सुनिश्चित करें ।

अंत में, इसे लोड करने के लिए लॉन्चक्टल का उपयोग करने के बजाय, बस लॉगआउट करें और वापस लॉग इन करें। इससे लॉन्च इसे अपने "लॉन्चएजेंट्स" निर्देशिका से ही उठाएगा और मिश्रण से एक और चर (यानी लॉन्चक्टल) ले जाएगा। "सभी संदेश" आप प्रविष्टियों को देखना चाहिए कि आपका ऐप्लिकेशन में विफल रहता है या सफल होता है में

<key>StandardErrorPath</key> 
<string>/tmp/mycommand.err</string> 
<key>StandardOutPath</key> 
<string>/tmp/mycommand.out</string> 

ओपन कंसोल अनुप्रयोग,:

12

सबसे अच्छा तरीका है मैं डिबग करने के लिए मिला है, अपने plist में। इस तरह:

4/28/15 10:43:19.938 AM com.apple.xpc.launchd[1]: (mycommand[18704]) Service exited with abnormal code: 1 

मुद्दा रहा था ProgramArguments के साथ था सरणी में <string> आइटम के रूप में कमान की प्रत्येक आइटम ले जाता है।

संपादित करें: मेरे मामले में, खोल स्क्रिप्ट के लिए एक साधारण रैपर उत्पन्न करने से भी बेहतर काम किया। यह स्क्रिप्ट ओएस एक्स "ऐप" - https://gist.github.com/mathiasbynens/674099 में शेल स्क्रिप्ट बनाने के लिए मूल फ़ोल्डर संरचना सेट अप करती है। यह आपके mysql -u arg1 कमांड के लिए बेहतर काम कर सकता है।

0

शुरू कमांड काम लेबल उम्मीद के रूप में यह तर्क है, तो आप निम्न का उपयोग कर इसे शुरू होगा ...

launchctl start com.myfile.hostname.plist 

रोकने के लिए, बस निम्नलिखित है ...

launchctl stop com.myfile.hostname.plist 

एक बार जब आपका पूरा परीक्षण पूरा हो जाए तो आप इसे लोड करने के लिए लॉग आउट करेंगे या यदि आपकी प्लेलिस्ट फ़ाइल उपयोगकर्ताओं में है लाइब्रेरी फ़ोल्डर निम्न टाइप करें ...

launchctl load ~/Library/LaunchAgents/com.myfile.hostname.plist 
-1

भविष्य Googlers के

के लिए इस का उत्तर देना आदेश आप देख रहे हैं

sudo tail -F /var/log/system.log | grep --line-buffered \ 
"com.apple.launchd\[" | grep "com.example.app" 

StandardOutPath या करने के लिए StandardErrorPath कुंजी है कि फिर बस जोड़ने डिबगिंग के बारे में मदद नहीं करता है अपने * .plit फ़ाइल और लॉग की जांच करें:

<key>StandardOutPath</key> 
<string>/tmp/test.stdout</string> 
<key>StandardErrorPath</key> 
<string>/tmp/test.stderr</string> 

चेक इस बाहर http://www.launchd.info/

सभी आवश्यक विन्यास/समस्या निवारण से संबंधित launchd से संबंधित जानकारी प्रदान करता है।