Chkconfig द्वारा समर्थित एक लिनक्स सेवा के लिए क्या आवश्यक है?


36

मैं बूट के दौरान ऑटो स्टार्ट को जोड़ने की कोशिश कर रहा हूं

chkconfig -add <servicename> 

और मुझे एक संदेश मिला

service <servicename> does not support chkconfig

मैं Red Hat Enterprise 4 का उपयोग कर रहा हूं। जिस स्क्रिप्ट को मैं बूटटाइम पर ऑटोस्टार्ट में जोड़ने का प्रयास कर रहा हूं वह निम्नलिखित है:

#!/bin/sh

soffice_start() {   if [ -x /opt/openoffice.org2.4/program/soffice ]; then
        echo "Starting Open Office as a Service"
        #echo " soffice -headless -accept=socket,port=8100;urp;StarOffice.ServiceManager
-nofirststartwizard"
        /opt/openoffice.org2.4/program/soffice
-headless -accept="socket,host=0.0.0.0,port=8100;urp;StarOffice.ServiceManager"
-nofirststartwizard &   else
        echo "Error: Could not find the soffice program. Cannot Start SOffice."   fi }

soffice_stop() {   if [ -x /usr/bin/killall ]; then
        echo "Stopping Openoffice"
        /usr/bin/killall soffice 2> /dev/null   else
        echo "Eroor: Could not find killall.  Cannot Stop soffice."   fi }

case "$1" in  'start')    soffice_start    ;;  'stop')    soffice_stop    sleep 2    ;;  'restart')    soffice_stop    sleep 5  soffice_start    ;;  *)    if [ -x /usr/bin/basename ]; then
        echo "usage: '/usr/bin/basename $0' start| stop| restart"    else
        echo "usage: $0 start|stop|restart"    fi esac

जवाबों:


74

स्क्रिप्ट में 2 लाइनें होनी चाहिए:

# chkconfig: <levels> <start> <stop>
# description: <some description>

उदाहरण के लिए:

# chkconfig: 345 99 01
# description: some startup script

345 - levels to configure
99 - startup order
01 - stop order

उपरोक्त हेडर जोड़ने के बाद आप चला सकते हैं chkconfig --add <service>


दूसरी पंक्ति पर अतिरिक्त स्थान को
मार्कडाउन

2
यहां रन लेवल और अन्य चीजों के बारे में कुछ और जानकारी दी गई है। tldp.org/HOWTO/HighQuality-Apps-HOWTO/boot.html
Pred

हालांकि उचित मार स्क्रिप्ट जोड़ने के लिए ऊपर नहीं लगता है। मुझे स्पष्ट रूप से किल स्क्रिप्ट्स प्राप्त करने के लिए chkconfig <सेवा> --level 06 बंद चाहिए।
user239558

4

जबकि कैटरील ने पहले ही यह जवाब दे दिया है कि नंगे न्यूनतम के साथ एक init स्क्रिप्ट बनाने के लिए आवश्यक है, मुझे लगता है कि आपको अच्छी तरह से देखने /etc/init.d/skeletonऔर उस टेम्पलेट के रूप में उपयोग करने के साथ सेवा की जाएगी, जिस पर आपकी init स्क्रिप्ट को आधार बनाया जाए। आप एक बहुत अधिक सुसंगत और पठनीय स्क्रिप्ट के साथ समाप्त करेंगे।


5
सैद्धांतिक रूप से अच्छी सलाह, लेकिन /etc/init.d/skeletonआरएचईएल सिस्टम पर मौजूद नहीं है, केवल डेबियन और संबंधित (उबंटू, मुझे लगता है) पर।
हरलन

1

ऐसा लगता है कि जियो की विशिष्ट समस्या पहले से ही हल हो गई है, लेकिन मैं एक समान संदेश में भाग गया, जबकि sidekiqएक प्रबंधित सेवा के साथ एक रेल एप्लिकेशन स्थापित करने की कोशिश कर रहा हूं । मैं अपने समाधान की व्याख्या यहाँ करूँगा जब यह मेरे जैसे किसी अन्य नए व्यक्ति की मदद करेगा।

मैं एक CentOS स्थापित पर काम कर रहा हूँ, और chkconfig पहले से ही http, mysql, और redis जैसी कई अन्य सेवाओं के साथ स्थापित है। ध्यान दें कि अधिकांश सेवाएं केवल रनलेवलों पर सक्षम होने की जरूरत है 3के माध्यम से 5

chkconfig --list
> httpd             0:off   1:off   2:on    3:on    4:on    5:on    6:off
> mysqld            0:off   1:off   2:on    3:on    4:on    5:on    6:off
> redis-server      0:off   1:off   2:on    3:on    4:on    5:on    6:off
> (etc...)

मुझे sidekiqसेवा के लिए एक नई स्क्रिप्ट जोड़ने की आवश्यकता थी , इसलिए मैंने https://gist.github.com/CD1212/5326706 पर स्क्रिप्ट को पकड़ा , अपने ऐप के मापदंडों को फिट करने के लिए इसे संशोधित किया, और इसे /etc/rc.d/init.d/sidekiqसभी के जैसे रूट के स्वामित्व में सहेजा । अन्य स्क्रिप्ट)।

हालाँकि जब मैंने इस नई सेवा को पंजीकृत करने का प्रयास किया, तो मुझे chkconfig त्रुटि मिली:

sudo chkconfig --add sidekiq
> service sidekiq does not support chkconfig

कुछ अतिरिक्त पढ़ने के बाद मुझे पता चला कि प्रत्येक chkconfig स्क्रिप्ट के शीर्ष पर परिभाषित प्राथमिकता संख्या अद्वितीय होनी चाहिए। एक स्पष्ट त्रुटि संदेश अच्छा होता! एक अन्य स्क्रिप्ट में प्राथमिकता स्तर 75 बंद था, इसलिए मैंने खदान को 76 में बदल दिया और फिर से कोशिश की। यहाँ मेरे init स्क्रिप्ट के प्रमुख हैं:

#!/bin/bash
#
# sidekiq    Init script for Sidekiq
#
# chkconfig: 345 99 76
# processname: sidekiq
# pidfile: /var/www/visual_testing_tool/sidekiq.pid
# description: Starts and Stops Sidekiq message processor for the Rails app.
#

इस बार, sudo chkconfig --add sidekiqकोई शिकायत नहीं दी। फिर जब मैं भागा sudo chkconfig --list sidekiq, तो साइडकीक सेवा को onउपयुक्त रनवे के रूप में दिखाया गया था ।


0

प्राथमिकता संख्या को अद्वितीय होने की आवश्यकता नहीं है। वे केवल सेवाओं के एक आदेश का प्रतिनिधित्व करते हैं।

ls -l /etc/rc.d/rc3.d/*oracle lrwxrwxrwx 1 रूट रूट 16 सितंबर 16 12:28 /etc/rc.d/rc3.d/S99oracle -> ..init.d/oracle

ls -l /etc/rc.d/rc3.d/*it
lrwxrwxrwx 1 रूट रूट 12 सितंबर 16 12:36 /etc/rc.d/rc3.d/S99it -> ../inx.d/it

Chkconfig में "it" सेवा को जोड़ने का मुद्दा नहीं था। अन्यथा आप 100 सेवाओं तक सीमित रहेंगे।

इसके अलावा मेरे उदाहरण में, यह ओरेकल से पहले चलेगा क्योंकि लिपियों को वर्णानुक्रम में चलाया जाता है।

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