सिस्टम रिबूट पर टॉमकैट 7 को स्वचालित रूप से कैसे पुनरारंभ करें?


26

मैंने Ubuntu 12.04 LTS पर Tomcat 7 स्थापित किया है जो एक ऐमज़ॉन EC2 उदाहरण पर चलता है। अब मैं कामना करता हूं कि सिस्टम रिबूट पर टॉमकैट अपने आप फिर से शुरू हो जाए।

मैं इस ब्लॉग को पढ़ता हूं जो स्क्रिप्ट के नीचे जोड़ने का सुझाव देता है /etc/init.d/tomcat7:

# Tomcat auto-start
#
# description: Auto-starts tomcat
# processname: tomcat
# pidfile: /var/run/tomcat.pid

case $1 in
start)
sh /usr/share/tomcat7/bin/startup.sh
;;
stop) 
sh /usr/share/tomcat7/bin/shutdown.sh
;;
restart)
sh /usr/share/tomcat7/bin/shutdown.sh
sh /usr/share/tomcat7/bin/startup.sh
;;
esac 
exit 0

और निम्नलिखित आदेश जारी करें:

sudo chmod 755 /etc/init.d/tomcat7

sudo ln -s /etc/init.d/tomcat7 /etc/rc1.d/K99tomcat

sudo ln -s /etc/init.d/tomcat7 /etc/rc2.d/S99tomcat

sudo /etc/init.d/tomcat7 restart

मेरे सवाल

  1. Tomcat7 पहले से ही उस में स्क्रिप्ट, जहां हम सुझाव स्क्रिप्ट पेस्ट करने के लिए क्या है?
  2. क्या सुझाई गई प्रक्रिया सही है?

जवाबों:


51

/Etc/init.d/tomcat7 में नीचे दी गई सामग्री के साथ init स्क्रिप्ट बनाएं (आपकी स्क्रिप्ट को भी काम करना चाहिए लेकिन मुझे लगता है कि यह मानकों के अधिक निकट है)।

इस तरह से नेटवर्क इंटरफेस कॉन्फ़िगर किए जाने के बाद ही टॉमकैट शुरू होगा।

स्क्रिप्ट स्क्रिप्ट सामग्री:

#!/bin/bash

### BEGIN INIT INFO
# Provides:        tomcat7
# Required-Start:  $network
# Required-Stop:   $network
# Default-Start:   2 3 4 5
# Default-Stop:    0 1 6
# Short-Description: Start/Stop Tomcat server
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin

start() {
 sh /usr/share/tomcat7/bin/startup.sh
}

stop() {
 sh /usr/share/tomcat7/bin/shutdown.sh
}

case $1 in
  start|stop) $1;;
  restart) stop; start;;
  *) echo "Run as $0 <start|stop|restart>"; exit 1;;
esac

इसकी अनुमतियाँ बदलें और स्वचालित रूप से सही सिमिलिंक जोड़ें:

chmod 755 /etc/init.d/tomcat7
update-rc.d tomcat7 defaults

और अब से यह स्वचालित रूप से शुरू हो जाएगा और उचित रनले में प्रवेश करने पर बंद हो जाएगा। आप इसे भी नियंत्रित कर सकते हैंservice tomcat7 <stop|start|restart>


1
धन्यवाद। मैं उबंटू में नया हूं। जब आप कहते हैं कि "आप टॉमकैट केवल तभी शुरू करेंगे जब नेटवर्क इंटरफेस कॉन्फ़िगर किया गया हो।" "नेटवर्क इंटरफेस" का क्या अर्थ है? "उपयुक्त रन स्तर में प्रवेश करने" का क्या अर्थ है? और फ़ाइल tomcat7 में पहले से ही बहुत सारी स्क्रिप्ट है, जहां मुझे आपके द्वारा सुझाई गई स्क्रिप्ट को जोड़ना चाहिए।
गौरव अग्रवाल

/Etc/init.d के अंतर्गत init स्क्रिप्ट एक दूसरे पर निर्भर हो सकती है, जैसे कि इस मामले में: नेटवर्क स्क्रिप्ट चलाने से पहले tomcat7 स्क्रिप्ट नहीं चलेगी। क्या आप Google पर 'रनलेवल' और 'नेटवर्क इंटरफ़ेस' शब्द देख सकते हैं? मैं अन्य चीजों के साथ मदद करने में खुश हूं लेकिन दूसरों के लिए Googling तुच्छ सामान के साथ इतना नहीं। और अन्य प्रश्न के बारे में: मेरी स्क्रिप्ट /etc/init.d/tomcat7 को बदलने के लिए है।
मार्सिन कमिंसकी

/etc/init.d/tomcat7अपने सिस्टम में यहाँ फ़ाइल के समान है gist.github.com/942150 । क्या मुझे फ़ाइल से सभी सामग्री निकालनी चाहिए और अपनी स्क्रिप्ट को पेस्ट करना चाहिए या पहले से लिखी गई स्क्रिप्ट में किसी स्थान पर पेस्ट करना चाहिए।
गौरव अग्रवाल

मैंने उस स्क्रिप्ट को नहीं देखा है जिसे आपने संदर्भित किया है। यह समझ में आता है और ऐसा लगता है कि यह स्टार्टअप / शटडाउन स्क्रिप्ट की जगह लेता है जो टॉमकैट के साथ आती है। मेरा संस्करण केवल उनका उपयोग कर रहा है। क्या आपने उन लिपियों का परीक्षण किया है और पुष्टि करते हैं कि वे काम करती हैं? यदि हां, तो आप आगे बढ़ सकते हैं और मेरी स्क्रिप्ट का उपयोग कर सकते हैं। आपको जो भी पसंद है, उसका उपयोग करें, महत्वपूर्ण बात यह है कि जब आप इसे पेस्ट करते हैं तो स्क्रिप्ट क्या करती है यह समझना है।
मार्सिन कमिंसकी

1
मुझे संदेह है कि ऊपर दी गई शेल स्क्रिप्ट कभी भी ऐसी त्रुटि का कारण बन सकती है । कृपया पहले कुछ समस्या निवारण करें।
मार्सिन कमिंसकी

3
#!/bin/bash
#
# Author : subz
# Copyright (c) 2k15
#
# Make kill the tomcat process
#
TOMCAT_HOME=/media/subin/works/Applications/apache-tomcat-7.0.57
SHUTDOWN_WAIT=5

tomcat_pid() {
  echo `ps aux | grep org.apache.catalina.startup.Bootstrap | grep -v grep | awk '{ print $2 }'`
}

start() {
  pid=$(tomcat_pid)
  if [ -n "$pid" ] 
  then
    echo "Tomcat is already running (pid: $pid)"
  else
    # Start tomcat
    echo "Starting tomcat"
    /bin/sh $TOMCAT_HOME/bin/startup.sh
  fi


  return 0
}

stop() {
  pid=$(tomcat_pid)
  if [ -n "$pid" ]
  then
    echo "Stoping Tomcat"
    /bin/sh $TOMCAT_HOME/bin/shutdown.sh

    let kwait=$SHUTDOWN_WAIT
    count=0;
    until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ]
    do
      echo -n -e "\nwaiting for processes to exit";
      sleep 1
      let count=$count+1;
    done

    if [ $count -gt $kwait ]; then
      echo -n -e "\nkilling processes which didn't stop after $SHUTDOWN_WAIT seconds"
      kill -9 $pid
      echo  " \nprocess killed manually"
    fi
  else
    echo "Tomcat is not running"
  fi

  return 0
}
pid=$(tomcat_pid)

 if [ -n "$pid" ]
  then
    echo "Tomcat is running with pid: $pid"
    stop
  else
    echo "Tomcat is not running"
    start
  fi
exit 0

टोमेकैट के लिए शेल स्क्रिप्ट की जांच चल रही है या नहीं, अगर इसकी रनिंग प्रक्रिया को मार देती है। अगर टॉमकैट नहीं चल रहा है तो यह फिर से इस स्क्रिप्ट को स्टार्ट अप स्क्रिप्ट के रूप में जोड़ देगा
SUBZ

3

खिचड़ी भाषा इस में जोड़ा जाएगा /etc/rc.local

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

sleep 10
/usr/share/tomcat7/bin/startup.sh

4
कम से कम वह व्यक्ति जिसने आपको नीचा दिखाया है, उसे क्यों समझाना चाहिए। हम सभी लिनक्स के बारे में नहीं जानते हैं, और यह सीखना अच्छा होगा कि आपको ऐसा क्यों नहीं करना चाहिए।
एडेनशॉ


0

Apache tomcat इसके साथ किसी भी init स्क्रिप्ट को शिप नहीं करता है।

  1. उबंटू द्वारा बनाए गए प्रीपेड संस्करण को उबंटू पैकेज मैनेजर से स्थापित करें यह संस्करण अपनी इनइट स्क्रिप्ट को शिप करता है।

  2. आपके द्वारा संदर्भित ब्लॉग में उन चरणों का पालन करें जो आपको किकस्टार्ट init स्क्रिप्ट प्रदान करते हैं।

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