CentOS Linux程序自启动脚本

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

建立自启动脚本:

vim /etc/init.d/tomcat

输入如下内容:

#!/bin/bash # # tomcat startup script for the Tomcat server # # chkconfig: 345 80 20 # description: start the tomcat deamon # # Source function library . /etc/rc.d/init.d/functions prog=tomcat JAVA_HOME=/usr/java/jdk1.6.0_27 export JAVA_HOME CATALANA_HOME=/usr/local/tomcat export CATALINA_HOME case "$1" in start) echo "Starting Tomcat..." $CATALANA_HOME/bin/startup.sh ;; stop) echo "Stopping Tomcat..." $CATALANA_HOME/bin/shutdown.sh ;; restart) echo "Stopping Tomcat..." $CATALANA_HOME/bin/shutdown.sh sleep 2 echo echo "Starting Tomcat..." $CATALANA_HOME/bin/startup.sh ;; *) echo "Usage: $prog {start|stop|restart}" ;; esac 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 表示退出。