市面上有很多關於指令碼的書籍和教程,好是好,可寫的越來越像程式設計書。其中不僅有演算法的介紹,比如遞迴,冒泡法,高效,冗餘。還伴有非常高深的案例,看的是雲裡霧裡,頭昏腦脹。看完以後感覺如下,書是好書,例子是好例子,演算法更是好演算法,可多少有些脫離實際,提高的可以,幹活的不成。對於沒有任何程式開發基礎的同志來說更是如此。
可那些書就不看了嗎?答案是否定的,這些書上所撰寫的內容雖然晦澀可都是好東西。但攘外必先安內,在看這些書之前,我認為,更重要的應該先要搞清楚系統本身的指令碼。作為發行版系統中使用的指令碼,肯定都是經典中的經典,除了能夠幫助我們更好的編寫指令碼以外,還能使我們理清linux系統服務的執行方法,更重要的是,在發生錯誤的時候可以讓我們更快的鎖定問題。可謂是一舉多得。下面就是對/etc/init.d/httpd指令碼的解釋,不詳之處還望大家諒解,歡迎各位批評指教。
#以上皆為注釋,可以忽略。
. /etc/rc.d/init.d/functions
#"."等價於source,在這裡等同於c語言中的include。講function中函式及變數的定義匯入到當前指令碼的執行環境中。
fi#如果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
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...