httpd系統自帶啟動指令碼詳解

2021-09-03 07:24:29 字數 2983 閱讀 4068

市面上有很多關於指令碼的書籍和教程,好是好,可寫的越來越像程式設計書。其中不僅有演算法的介紹,比如遞迴,冒泡法,高效,冗餘。還伴有非常高深的案例,看的是雲裡霧裡,頭昏腦脹。看完以後感覺如下,書是好書,例子是好例子,演算法更是好演算法,可多少有些脫離實際,提高的可以,幹活的不成。對於沒有任何程式開發基礎的同志來說更是如此。

可那些書就不看了嗎?答案是否定的,這些書上所撰寫的內容雖然晦澀可都是好東西。但攘外必先安內,在看這些書之前,我認為,更重要的應該先要搞清楚系統本身的指令碼。作為發行版系統中使用的指令碼,肯定都是經典中的經典,除了能夠幫助我們更好的編寫指令碼以外,還能使我們理清linux系統服務的執行方法,更重要的是,在發生錯誤的時候可以讓我們更快的鎖定問題。可謂是一舉多得。下面就是對/etc/init.d/httpd指令碼的解釋,不詳之處還望大家諒解,歡迎各位批評指教。

#以上皆為注釋,可以忽略。

. /etc/rc.d/init.d/functions

#"."等價於source,在這裡等同於c語言中的include。講function中函式及變數的定義匯入到當前指令碼的執行環境中。

#如果httpd為檔案,那麼也將其匯入到當前指令碼執行環境中。

#如果變數httpd_lang未定義,那麼將其定義為"c",即英文

#定義一系列變數,用於後面的執行。

retval=0

#定義全域性命令返回變數

}#定義check13函式,用於測試配置檔案中是否有apache1.3的配置,如果有就顯示相應的錯誤提示並退出指令碼。grep -e引數為支援擴充套件的正規表示式,-i或略大小寫,-q靜默輸出即結果不顯示在標準輸出中。該函式通過在配置檔案中查詢gone變數中用"|"分隔的內容來確認配置檔案的正確與否。^[[:space:]]*為正規表示式,代表若干個空格開頭。其中[[:space:]]為posix字元。

start()

return $retval }

#定義start函式,用於apache的啟動。

#如果daemon /usr/sbin/httpd 成功就建立/var/lock/subsys/httpd檔案。daemon表示啟動乙個新的後台程序與nohup相似。/usr/sbin/httpd**於$httpd變數,變數$options**於/etc/sysconfig/httpd

stop() $ }

#定義stop函式,用於apache的關閉。

#從指令碼中可以看到,apache的關閉實際上是通過,killproc -d 10 完成的,並且刪除pid檔案。

reload()

case "$1" in #$1表示執行指令碼時的第乙個引數

start)

start #如果引數為start,執行start函式 ;;

stop)

stop #如果引數為stop,執行stop函式 ;;

status)#如果引數為status,執行status函式,函式定義在function檔案中

restart)#如果引數為restart,首先執行stop函式,再執行start函式

stop

start ;;

condrestart)#在apache已經執行的情況下,再執行restart操作。

if [ -f $ ] ; then

stop

start fi

;;reload)#如果引數為reload,執行reload函式

reload ;;

*)#如果不符合以上引數,將提示出錯資訊。

echo $"usage: $prog "

exit 1

esac

exit $retval

後面還會逐一的分析init.d下的指令碼,之所以先拿出httpd指令碼做分析,是因為httpd指令碼可以算是眾多指令碼中比較具有代表性的,也是網際網路應用中比較常用的,大家在也能參照他為原始碼包安裝的apache做啟動,所以就讓他為後面將要分析的其他指令碼做個開場吧。

httpd系統自帶啟動指令碼詳解

市面上有很多關於指令碼的書籍和教程,好是好,可寫的越來越像程式設計書。其中不僅有演算法的介紹,比如遞迴,冒泡法,高效,冗餘。還伴有非常高深的案例,看的是雲裡霧裡,頭昏腦脹。看完以後感覺如下,書是好書,例子是好例子,演算法更是好演算法,可多少有些脫離實際,提高的可以,幹活的不成。對於沒有任何程式開發基...

建立httpd啟動指令碼並加入啟動列表開機啟動

第一步 第二步 在第一行 bin sh下增加兩行文字 chkconfig 35 70 30 這裡的35指的是在3和5級別開啟該服務 70 指的是開機啟動服務在70位,30指的是關機關閉服務在30位,一般啟動服務的順序和關閉順序的和100。description apache 描述資訊 這裡的 不再試...

Oracle 啟動指令碼

大家都注意到用oracle自帶的dbstart指令碼無法在系統啟動時自動啟動oracle資料庫,下面介紹oracle啟動指令碼的編寫和設定!最簡單的指令碼示例 bin sh sqlplus as sysdba oracle instance started.total system global a...