linux下程序啓動腳本樣例

 

#!/bin/bash
#nginx Start script for the Nginx HTTP Server
# chkconfig: – 99 50
#雖然前面帶#號,是註釋,但要用chkconfig命令註冊開機啓動服務器的話,該句必不可少,格式也不能錯!# chkconfig: – 99 50 冒號的3個參數的含義:
(第一位(X):是指定該腳本在哪個系統啓動級別下運行(關於linux啓動級別將在別的博文中介紹),比如你需要在3,4,5上運行,那麼第二位就設置成345,我這裏用的是”-”,代表在2,3,4,5上都運行。
第二位(Y):系統啓動時,服務啓動順序。(需要注意的是,有的程序依賴與別的程序的話,啓動順序就要注意了,比如A程序的啓動依賴於B程序的啓動,那麼A程序的這個值一定要比B程序大。)
第三位(Z):系統終止時,服務終止順序。)
# description: Nginx is a high-performance web and proxy server.
#該句也必不可少,理由同上,你程序的描述和間接,而非本啓動腳本。
#設置變量
nginxd=/usr/local/nginx/sbin/nginx
nginx_config=/usr/local/nginx/conf/nginx.conf
nginx_pid=/usr/local/nginx/logs/nginx.pid
#保存退出狀態的變量,初始值爲0(在linux一般0表示成功,表示OK,非0表示異常,不OK)
RETYAL=0
prog="nginx"
#程序的啓動參數,這個很重要哦,那個–dameon參數是必不可少的,-4表示只在ipv4上監聽,如果你要加更多參數,你需要參照/usr/bin/rsyncd –daemon –help後的幫助信息
OPTIONS="--daemon -4"
#Source function library.在當前shell中運行的函數庫文件(在functions中定義了很多函數,在這裏可以調用,系統提供的函數文件,這裏面實現了很多函數和環境變量,比如start的時候,紅色的字顯示OK就是這個文件的功勞。)
. /etc/rc.d/init.d/functions
#Source network configuration.
. /etc/sysconfig/network
#Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x $nginxd ] || exit 0
#Start nginx daemons function.定義函數
start() {
#判斷程序是否存在,否則異常退出。
[ -x $nginxd ] || \
         { echo “FATAL: No such programme”;exit 4; }
#判斷配置文件是否存在,否則異常退出。
[ -f $nginx_config ] || \
         { echo “FATAL:Config file does not exist”;exit 6; }
#判斷程序是否運行,否則異常退出。
if [ -e $nginx_pid ];then
         echo "nginx already running...."
         exit 1
fi
#顯示信息,依賴於. /etc/rc.d/init.d/functions
         echo -n $"Starting $prog:"
#調用functions裏的daemon函數來啓動nginx(daemon()函數主要用於希望脫離控制檯,以守護進程形式在後臺運行的程序。)
         daemon $nginxd -c ${nginx_config} $OPTIONS
#把daemon函數調用的結果保存到RETVAL裏
         RETVAL=$?
         echo
#判斷RETVALR值,如果是0執行成功,則生成鎖文件(鎖文件主要用來判斷程序是否運行)
         [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
#終止函數,並返回$RETVAL的值(通常用於函數的結束, 本身這段代碼也是個函數,所以我們也要返回,返回RETVAL的值)
         return $RETVAL
}
#Stop nginx daemons functions.
stop() {
         echo -n $"Stoping $prog:"
#killproc也在. /etc/rc.d/init.d/functions裏面定義
         killproc $nginxd
         RETVAL=$?
         echo
         [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /usr/local/nginx/logs/nginx.pid
}
reload() {
         echo -n $"Reloading $prog:"
         #kill -HUP `cat ${nginx_pid}`
         killproc $nginxd -HUP
         RETVAL=$?
         echo
}
#See how we were called.
case "$1" in
start)
         start
         ;;
stop)
         stop
         ;;
reload)
         reload
         ;;
restart)
         stop
         start
         ;;
#status在. /etc/rc.d/init.d/functions裏有定義
status)
         status $prog
         RETVAL=$?
         ;;
#輸入其他內容提示以下內容
*)
         echo $"Usage:$prog{start|stop|restart|reload|status|help}"
         exit 1
esac
exit $RETVAL
#################################################################
[root@manor nginx-1.0.12]# chmod 775 /etc/rc.d/init.d/nginx
[root@manor nginx-1.0.12]# /etc/rc.d/init.d/nginx restart
Stoping nginx:                                             [確定]
正在啓動 nginx:                                         [確定]
[root@manor nginx-1.0.12]# service nginx restart
Stoping nginx:                                             [確定]
正在啓動 nginx:                                         [確定]
[root@manor nginx-1.0.12]# chkconfig nginx on
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章