> CentOS > CentOS入门 >

Centos开机启动tomcat

程序自启动脚本实质上就是一个shell脚本。以简单的Tomcat自启动脚本为例,Tomcat使用安装目录下的startup.sh启动、shutdown.sh停止,我们可以把它们写到一个启动脚本里。Tomcat和JDK的安装可看前面的这篇文章:http://www.live-in.org/archives/891.html

建立自启动脚本:

vim /etc/init.d/tomcat

输入如下内容:

Java代码  
  1. #!/bin/bash  
  2. #  
  3. # tomcat startup script for the Tomcat server  
  4. #  
  5. # chkconfig: 345 80 20  
  6. # description: start the tomcat deamon  
  7. #  
  8. # Source function library  
  9. . /etc/rc.d/init.d/functions  
  10.   
  11. prog=tomcat  
  12. JAVA_HOME=/usr/java/jdk1.6.0_27  
  13. export JAVA_HOME  
  14. CATALANA_HOME=/usr/local/tomcat  
  15. export CATALINA_HOME  
  16.   
  17. case "$1" in  
  18. start)  
  19.     echo "Starting Tomcat..."  
  20.     $CATALANA_HOME/bin/startup.sh  
  21.     ;;  
  22.   
  23. stop)  
  24.     echo "Stopping Tomcat..."  
  25.     $CATALANA_HOME/bin/shutdown.sh  
  26.     ;;  
  27.   
  28. restart)  
  29.     echo "Stopping Tomcat..."  
  30.     $CATALANA_HOME/bin/shutdown.sh  
  31.     sleep 2  
  32.     echo  
  33.     echo "Starting Tomcat..."  
  34.     $CATALANA_HOME/bin/startup.sh  
  35.     ;;  
  36.   
  37. *)  
  38.     echo "Usage: $prog {start|stop|restart}"  
  39.     ;;  
  40. esac  
  41. exit 0  
 

说明:
这里的启动脚本可以把它分为3个部分,第一部分是申明启动脚本和注释,第二部分是定义路径的变量,第三部分是一个case...in条件选择结构。

第一部分
1)因为是个shell脚本,所以开始必须要有#!/bin/bash这一行,这里表示使用的shell是bash。
2)# chkconfig: 345 80 20是让chkconfig命令能够识别这个启动脚本,必须要有,其余带#的都是注释说明。
3). /etc/rc.d/init.d/functions是在当前shell下执行functions这个文件,而不是在子shell中执行。它类似于库函数,后面的启动脚本可能会调用functions内的基础函数。

第二部分
1)从prog=tomcat开始,设定了3个变量,使用prog定义脚本名称,JAVA_HOME定义JDK安装目录,CATALANA_HOME定义tomcat安装目录。
2)export命令是使定义的变量在子shell中也可以使用。

第三部分
1)第三部分是一个case条件选择结构,语法结构如下:

case 字符串 in
  值1 )
    操作 ;;
  值2 )
    操作 ;;
  值3 )
    操作 ;;
  ...
  *)
    操作 ;;
esac

2)$1是一个位置参数,位置参数是一种在调用shell程序的命令行中按照各自的位置决定的变量,是在程序名之后输入的参数。位置参数之间用空格分隔,shell取第一个位置参数替换程序文件中的$1,第二个替换$2,依次类推。
3)$CATALANA_HOME/bin/startup.sh表示启动tomcat。
4)$CATALANA_HOME/bin/shutdown.sh表示停止tomcat。
5)sleep 2 表示休眠2秒。
6)exit 0 表示退出。

 

(责任编辑:IT)