Tomcat7 sistem yeniden başlatıldığında otomatik olarak nasıl yeniden başlatılır?


26

Tomcat 7'yi bir Amzon EC2 örneğinde çalışan Ubuntu 12.04 LTS'ye yükledim. Şimdi keşke tomcat sistem yeniden başlatıldığında otomatik olarak yeniden başlatılsın.

Aşağıdaki betiğin eklenmesini öneren bu blogu okudum /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

ve aşağıdaki komutları verin:

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

Sorularım

  1. Tomcat7 zaten biz önerilen senaryoyu yapıştırmak zorunda İçinde senaryoyu vardır?
  2. Önerilen prosedür doğru mu?

Yanıtlar:


51

Init betiğini /etc/init.d/tomcat7 içinde aşağıdaki içeriklere göre oluşturun (betiğiniz de çalışmalı ama bence bu standartlara daha sıkı uyuyor).

Bu şekilde Tomcat yalnızca ağ arayüzleri yapılandırıldıktan sonra başlayacaktır.

Betik içeriğini başlat:

#!/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

İzinlerini değiştir ve otomatik olarak doğru sembolik işaretleri ekle:

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

Ve bundan sonra uygun çalışma seviyelerine girildiğinde otomatik olarak başlatılacak ve kapanacaktır. Ayrıca kontrol edebilirsinizservice tomcat7 <stop|start|restart>


1
Teşekkürler. Ubuntu'da yeniyim. "Tomcat yalnızca ağ arayüzleri yapılandırıldıktan sonra başlayacaktır" derken anlamı nedir. "Ağ arayüzleri" nin anlamı nedir? “Uygun çalışma seviyesine girildiğinde” ne demektir? ve tomcat7 dosyası zaten sizin için önerilen betiği ekleyeyim, içinde çok fazla betiği var.
Gaurav Agarwal

/Etc/init.d altındaki init komut dosyaları birbirine bağlı olabilir, bu durumda olduğu gibi: tomcat7 komut dosyası, ağ komut dosyaları çalıştırılmadan önce çalıştırılmaz. Google'da 'çalışma seviyeleri' ve 'ağ arayüzü' terimlerini arayabilir misiniz? Başkalarına yardımcı olmaktan mutluluk duyuyorum ama başkaları için Googling ile ilgili önemsiz şeyler konusunda çok fazla değil. Ve diğer soru hakkında: betiğim /etc/init.d/tomcat7'nin yerine geçecek.
Marcin Kaminski

/etc/init.d/tomcat7Benim sistemde buraya dosyasına benzer gist.github.com/942150 . Tüm içeriği dosyadan kaldırmalı ve komut dosyanızı yapıştırmalı mıyım veya önceden yazılmış komut dosyasında bir yere yapıştırmalı mıyım?
Gaurav Agarwal

Daha önce referans aldığınız betiği görmedim. Aklı başında görünüyor ve Tomcat ile birlikte gelen başlangıç ​​/ kapatma komut dosyalarının yerini alıyor gibi görünüyor. Benim sürümüm sadece onları kullanıyor. Bu komut dosyalarını test ettiniz ve çalıştıklarını onayladınız mı? Eğer öyleyse, devam edip senaryomu kullanabilirsiniz. Hangisini istersen kullanın, önemli olan şey, yapıştırırken komut dosyasının ne yaptığını anlamaktır.
Marcin Kaminski

1
Yukarıdaki kabuk betiğinin böyle bir hataya neden olabileceğinden şüpheliyim . Lütfen önce biraz sorun giderme yapın.
Marcin Kaminski

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

onun koşma bir başlangıç komut dosyası olarak bu komut dosyası eklemek tekrar başlayacak çalışmıyorken tomcat .eğer sürecini öldürürseniz tomacat için kabuk komut dosyası onay veya çalışıyor yukarıda
Subz

3

Bu eklenemez /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
En azından seni hakaret eden kişi nedenini açıklamalı. Hepimiz Linux hakkında her şeyi bilmiyoruz ve bunu neden yapmamanız gerektiğini öğrenmek güzel olurdu.
Edenshaw


0

apache tomcat onunla herhangi bir init betiği göndermiyor.

  1. Ubuntu tarafından tutulan önceden paketlenmiş sürümünü Ubuntu paket yöneticisinden yükleyin, bu sürüm kendi init betiğini gönderir.

  2. Size başvuruda bulunduğunuz blogda bir kickstart init betiği sağlayan adımları izleyin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.