程序自啟動腳本實質上就是一個shell腳本。以簡單的Tomcat自啟動腳本為例,Tomcat使用安裝目錄下的startup.sh啟動、shutdown.sh停止,我們可以把它們寫到一個啟動腳本裡。
建立自啟動腳本:
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 )
操作 ;;
...
*)
操作 ;;
esac2)$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 表示退出。