启动多个Tomcat实例

我想要配置Tomcat的init.d启动脚本的多个实例的工作(此时2个实例)启动多个Tomcat实例

我按照下面的示例脚本创建的init.d脚本

#!/bin/bash 

#

# tomcat This shell script takes care of starting and stopping Tomcat

#

# chkconfig: - 80 20

#

### BEGIN INIT INFO

# Provides: tomcat

# Required-Start: $network $syslog

# Required-Stop: $network $syslog

# Default-Start:

# Default-Stop:

# Short-Description: start and stop tomcat

### END INIT INFO

TOMCAT_USER=root

TOMCAT_HOME="/opt/tomcat7/node1"

SHUTDOWN_WAIT=45

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 service"

/bin/su - -c "cd $TOMCAT_HOME/bin && $TOMCAT_HOME/bin/startup.sh" $TOMCAT_USER

fi

return 0

}

stop() {

pid=$(tomcat_pid)

if [ -n "$pid" ]

then

echo "Stoping Tomcat"

/bin/su - -c "cd $TOMCAT_HOME/bin && $TOMCAT_HOME/bin/shutdown.sh" $TOMCAT_USER

let kwait=$SHUTDOWN_WAIT

count=0

count_by=5

until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ]

do

echo "Waiting for processes to exit. Timeout before we kill the pid: ${count}/${kwait}"

sleep $count_by

let count=$count+$count_by;

done

if [ $count -gt $kwait ]; then

echo "Killing processes which didn't stop after $SHUTDOWN_WAIT seconds"

kill -9 $pid

fi

else

echo "Tomcat is not running"

fi

return 0

}

case $1 in

start)

start

;;

stop)

stop

;;

restart)

stop

start

;;

status)

pid=$(tomcat_pid)

if [ -n "$pid" ]

then

echo "Tomcat is running with pid: $pid"

else

echo "Tomcat is not running"

fi

;;

esac

exit 0

问题是tomcat_pid()所有Tomcat实例的方法返回的进程ID,正因为如此,二审不能启动。有没有更好的方法来处理这个问题?

回答:

发现用netstat我们可以发现进程ID的解决办法,但期待更好的解决方案

通过运行端口号

echo `netstat -tlnp | awk '/:80 */ {split($NF,a,"/"); print a[1]}'` 

所以我修改的功能tomcat_pid(),如下

tomcat_pid() { 

echo `netstat -tlnp | awk '/:<port> */ {split($NF,a,"/"); print a[1]}'`

}

以上是 启动多个Tomcat实例 的全部内容, 来源链接: utcz.com/qa/261136.html

回到顶部