2009-09-03 13 views
26

मैं यह पता लगाने की कोशिश कर रहा हूं कि मेरी लॉन्च की गई स्क्रिप्ट क्यों काम नहीं कर रही है। यह बेहद सरल है, लेकिन मैं मैक पर्यावरण के लिए नया हूं और आदी होने की कोशिश कर रहा हूं। यहाँ मेरी plist है। मुझे पता है ProgramArguments आवश्यक है, इसलिए मैंने वहां स्क्रिप्ट पथ डाला है।बहुत सरल लॉन्चड प्लिस्ट मेरी स्क्रिप्ट नहीं चला रहा

<?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>Label</key> 
    <string>com.tomcat.plist</string> 
    <key>ProgramArguments</key> 
    <array> 
    <string>/opt/apache-tomcat-5.5.27/bin/startup.sh</string> 
    </array> 
    <key>OnDemand</key> 
    <false/> 
</dict> 
</plist> 

जब मैं launchctl load <name> चलाने का प्रयास इसे ठीक से लोड करने के लिए (जो में यह मुझे किसी भी त्रुटि संदेश नहीं देता है) लगता है, लेकिन स्क्रिप्ट, को क्रियान्वित किए जाने की भी रिबूट पर नहीं लगता है।

मैंने उन सभी उदाहरणों का उपयोग किया है जिन्हें मैंने ऑनलाइन पाया है और मैं यह नहीं समझ सकता कि यह मेरी स्क्रिप्ट को स्टार्ट अप क्यों नहीं चला रहा है।

उत्तर

13

अपनी स्क्रिप्ट स्वचालित रूप से चलाने बनाने के लिए जब आप launchctl लोड कहते हैं, आप जोड़ने की जरूरत है: -

<key>RunAtLoad</key> 
<true/> 

वैकल्पिक रूप से आप इस्तेमाल कर सकते हैं: -

launchctl start com.tomcat.plist 
36

शायद ज़रुरत पड़े किसी और को इस पर चलने वाले मुद्दा, और पहले से ही <key>RunAtLoad</key><true/> उनके प्लेस्ट में है, मैं कुछ अतिरिक्त समाधान प्रदान करना चाहता हूं।

दोबारा जांच करके अनुमतियाँ सुनिश्चित करें कि अपनी स्क्रिप्ट निष्पादन योग्य है (एक 'एक्स' के लिए देखें) बनाने के लिए:

ls -l /opt/apache-tomcat-5.5.27/bin/startup.sh 

संशोधित अनुमतियाँ यदि आवश्यक हो तो:

chmod +x /opt/apache-tomcat-5.5.27/bin/startup.sh 

इसके अलावा पहले सीधे स्क्रिप्ट चलाने और सुनिश्चित करें कि यह काम करता है:

/opt/apache-tomcat-5.5.27/bin/startup.sh 

यदि स्क्रिप्ट निष्पादन योग्य है, और सीधे ठीक चलती है, डिबग launchd को सिस्टम लॉग पीछा प्रयास करें:

sudo launchctl log level debug 
tail -f /var/log/system.log 

-f ध्वज (मूल रूप से) लगातार लॉग के अंत (नवीनतम प्रविष्टियों) को दर्शाता है। आप इस ध्वज को लॉग के अंत के स्नैपशॉट को प्रिंट करने के लिए हटा सकते हैं। यदि आप इस ध्वज का उपयोग करते हैं, तो आपको अन्य आदेश चलाने के लिए एक नया टर्मिनल खोलना होगा। पूंछ सत्र समाप्त करने के लिए CTRL + C दबाएं।

man tail 

काम पूरा हो जाने डिबगिंग: अधिक जानकारी के लिए

sudo launchctl log level error 

अन्य लॉग स्तरों रहे हैं। अधिक जानकारी के लिए:

man launchctl 

आप स्क्रिप्ट या plist में कोई परिवर्तन करने हैं, तो सुनिश्चित करें कि आप plist को फिर से लोड कर सकते हैं।उदाहरण के लिए:

launchctl unload ~/Library/LaunchAgents/com.tomcat.plist 
launchctl load ~/Library/LaunchAgents/com.tomcat.plist 

आप केवल स्क्रिप्ट और नहीं plist में परिवर्तन किए हैं, तो आप सिर्फ plist को पुनः आरंभ कर सकते हैं:

launchctl stop com.tomcat.plist 
launchctl start com.tomcat.plist 

आप अपने plist के लिए निम्न कुंजी मान जोड़ा है:

<key>KeepAlive</key> 
<true/> 

तो फिर तुम बस चला सकते हैं:

launchctl stop com.tomcat.plist 

और यह स्वचालित रूप से पुनरारंभ होगा।

यदि इनमें से कोई भी मदद नहीं करता है, और आपको विशेष रूप से ओएस एक्स, this tutorial पर टॉमकैट स्थापित करने में समस्याएं हो रही हैं, तो मदद की जा सकती है।

+0

मुझे एक टेस्ट स्क्रिप्ट के साथ एक ही समस्या है ... मैंने लॉन्चक्टल 'स्टार्ट' और 'स्टॉप' कमांड त्रुटि वापस कर दी है "ऐसी कोई प्रक्रिया नहीं" – Michael

+2

@ माइकल 'स्टार्ट' और 'स्टॉप' एक तर्क के रूप में लेबल लेता है फ़ाइल का नाम नहीं उपर्युक्त उदाहरण में, कॉन्फ़िगर में ' com.tomcat.plist' है लेकिन यह संभावना है कि आपके पास केवल 'com.tomcat' है' इसलिए 'launchctl start com.tomcat' को काम करना चाहिए। –

+7

सुंदर। "sudo launchctl लॉग स्तर त्रुटि" अब लागू नहीं किया गया है। – Michael

संबंधित मुद्दे