init.d स्क्रिप्ट स्टार्टअप पर नहीं चल रहा है


15

मैं स्क्रीन का उपयोग कर अपने समर्पित सर्वर पर कुछ काउंटर-स्ट्राइक गेम सर्वरों की मेजबानी कर रहा हूं। मेरे पास यह स्क्रिप्ट है जो मैं तब चलाता हूं जब मैं सर्वरों को शुरू / बंद करना चाहता हूं:

#! /bin/sh
# /etc/init.d/css-server
#

case "$1" in
  start)
    echo "Starting Nullus Imprimis war server..."
    screen -A -m -d -S css-war-server /home/css-servers/war-server/css/srcds_run -game cstrike +map de_dust2 +maxplayers 16 -autoupdate -port 2555 -tick 100 
    echo "Nullus Imprimis war server started"
    echo "Starting Nullus Imprimis pub server #1..."
    screen -A -m -d -S css-pub-server-1 /home/css-servers/pub-server-1/css/srcds_run -game cstrike +map de_dust2 +maxplayers 32 -autoupdate -port 2666 -tickrate 100
    echo "Nullus Imprimis pub server #1 started"
    ;;
  stop)
    echo "Stopping Nullus Imprimis war server..."
    screen -S css-war-server -X quit
    echo "Nullus Imprimis war server stopped"
    echo "Stopping Nullus Imprimis pub server #1..."
    screen -S css-pub-server-1 -X quit
    echo "Nullus Imprimis pub server #1 stopped"
    ;;
  *)
    echo "Usage: /etc/init.d/css-servers {start|stop}"
    exit 1
    ;;
esac

exit 0

मैंने इस स्क्रिप्ट को (बुलाया css-servers) /etc/init.d/और अपने ज्ञान के लिए रखा है, जिसका अर्थ है कि जब सिस्टम बूट होता है तो यह चलता है। हालाँकि जब मैं सक्रिय स्क्रीनों की जाँच करता हूँ तो screen -lsवहाँ कोई नहीं चल रहा होता है।

मैं Ubuntu सर्वर के तहत स्टार्टअप पर ये कैसे चला सकता हूं?

जवाबों:


33

बस वर्तमान में मौजूद स्क्रिप्ट के /etc/init.dपास स्टार्टअप पर चलने के लिए पर्याप्त नहीं है।

इसे अपने स्टार्टअप में जोड़ने के लिए, आपको इसके बारे में उबंटू को बताना होगा:

sudo update-rc.d css-servers defaults

इसके बाद इसे अगले बूट पर शुरू करना चाहिए, यदि स्क्रिप्ट ठीक से स्वरूपित, निष्पादन योग्य बिट सेट, आदि पैकेज है जो आप apt-get/ सॉफ़्टवेयर सेंटर से इंस्टॉल करते हैं तो यह कमांड या इसके समतुल्य आपके लिए स्वचालित रूप से चलते हैं, यही कारण है कि आपको आमतौर पर चिंता करने की ज़रूरत नहीं है इसके बारे में।

यदि आप इसे तुरंत शुरू करना चाहते हैं, तो आप इसे सीधे कॉल कर सकते हैं:

sudo service css-servers start

यह बेहद अजीब है। इस बिंदु तक मेरी स्क्रिप्ट इस update-rc.dकमांड के बिना स्टार्टअप पर चलती है । मैंने अपनी स्क्रिप्ट को अपडेट किया, यह तब तक नहीं चला जब तक कि मैं इस कमांड को नहीं चलाता। धन्यवाद। वैसे, हम इसे स्टार्टअप पर चलने से कैसे रोक सकते हैं (जैसा कि हमने अपडेट-आरडीडी के साथ किया था)?
निकोस

1
@ निक-एलज़ दिस क्यू एंड ए, उबंटू के पुराने और अप्रचलित संस्करणों को संदर्भित करता है जो ऊपर की ओर बढ़ते थे। इसका अब उपयोग नहीं किया जाना चाहिए, इसके बजाय वर्तमान सिस्टमड (जो पूरी तरह से अलग सेवा प्रणाली का उपयोग करता है) का उपयोग किया जाना चाहिए।
माइकल हैम्पटन

7

आपने पहला भाग किया है। /etc/init.dवह जगह है जहाँ से आरंभिक लिपियों को चलाया जाता है। हालाँकि, वे स्वचालित रूप से नहीं चलाए जाते हैं।

वे क्रम में /etc/rc*.dनिर्देशिकाओं के प्रतीकात्मक लिंक द्वारा निर्दिष्ट के रूप में चलाए जा रहे हैं । प्रत्येक रन स्तर की अपनी निर्देशिका होती है। लिंक नामों के साथ शुरू Kकरने वाले स्टॉप पैरोमीटर के साथ शुरू होते हैं, और जिनके नाम शुरू Sहोते हैं, वे स्टार्ट पैरामीटर के साथ चलते हैं। कन्वेंशन द्वारा फाइल के नाम अनुक्रमण के लिए उपयोग किए गए दो अंकों की संख्या के साथ Kया Sउसके बाद शुरू होते हैं , और स्क्रिप्ट के नाम के साथ समाप्त होते हैं /etc/init.d

लिंक मैन्युअल रूप से बनाए जा सकते हैं, लेकिन आम तौर पर एक स्क्रिप्ट के साथ बनाए जाते हैं। सामान्य स्क्रिप्ट update-rc.dउबंटू पर उपलब्ध है। कमांड man update-rc.dआपको इसका उपयोग करने के लिए प्रलेखन देगा। आपके मामले में:

sudo update-rc.d css-servers defaults

Init स्क्रिप्ट का उपयोग करके इसे शुरू करने का प्रयास करें:

sudo /etc/init.d/css-servers start

मैं आम तौर पर स्क्रिप्ट को वांछित तरीके से काम करने के लिए सर्वर को इस तरह से शुरू और बंद करता हूं। फिर मैं update-rc.dइसे /etc/rc.dरनले निर्देशिका में जोड़ने के लिए चलाता हूं ।


1

यदि आपको कोई सुराग नहीं मिल रहा है कि आपकी सेवा बूट पर क्यों शुरू नहीं हो रही है। हालाँकि, यह ठीक से काम करता है जब आप मैन्युअल रूप से सेवा शुरू करने का प्रयास करते हैं service <your service> start। उस स्थिति में, मानक आउटपुट और त्रुटि आउटपुट को कुछ फ़ाइल पर पुनर्निर्देशित करने का प्रयास करें। जो आपको कुछ संकेत दे सकता है कि सिस्टम को बूट करते समय यह क्यों शुरू नहीं हो रहा है।

जैसे आपकी स्क्रिप्ट के अंदर

case "$1" in
  start)
    echo "Starting Service "
    <your command to start the service > /tmp/bootservice.log 2>&1
    ;;
  stop)
    echo "Stopping Service "
    <your command to start the service > /tmp/bootservice.log 2>&1
    ;;
  *)
    echo "Usage: /etc/init.d/test {start|stop}"
    exit 1
    ;;
esac

exit 0
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.