日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

應(yīng)用部署為Solaris 10 SMF服務(wù)( 四 )


有關(guān)milestone的概念請參看Solaris Service Management Facility - Quickstart Guide 。
6. manifest文件必須定義啟動和停止服務(wù)的方法,標(biāo)簽即用于此目的 。原先利用/etc/init.d/myapp.sh加合適的參數(shù)即可啟動和停止myapp,現(xiàn)仍可利用 。不過myapp.sh需作小小改動,改動方法請參看下節(jié)啟停方法客戶化 。對于啟動和停止,分別需要定義兩個(gè)method,它們的type當(dāng)然都為“method,其中一個(gè)name設(shè)為為“start,exec表示執(zhí)行什么動作以完成這個(gè)start方法,其動作設(shè)為“/export/home/smfdemo/myapp.sh start 。另一個(gè)name設(shè)為“stop,由于原腳本是使用pkill命令殺掉myapp進(jìn)程,所以這里可以直接將“:kill賦給exec,表示SMF可直接殺掉myapp服務(wù)相關(guān)的所有進(jìn)程 。timeout_seconds定義了完成啟動和停止服務(wù)操作所需的最長時(shí)間,如果在這個(gè)時(shí)間內(nèi)未能完成相應(yīng)操作,SMF會認(rèn)為服務(wù)存在問題,因?yàn)闀⒎?wù)置為maintenance狀態(tài),由人工進(jìn)行排錯(cuò) 。本例中,timeout_seconds設(shè)為60秒足矣 。
事實(shí)上還有許多標(biāo)簽項(xiàng)目可以設(shè)定,但對于本例不是必要的,所以可省略不設(shè) 。有關(guān)manifest文件編寫更詳細(xì)信息,請參看Solaris Service Management Facility - Service Developer Introduction 。
啟停方法客戶化 SMF框架中svcs(1)命令非常有用,它不但可以列出系統(tǒng)中所有的服務(wù)資源及狀態(tài),還可以提供那些未正常啟動的服務(wù)的出錯(cuò)原因、影響范圍和可能的恢復(fù)方法等 。比如,它可以報(bào)告說某個(gè)服務(wù)因?yàn)榕渲貌徽_而未正常啟動,或者某服務(wù)遇到致使錯(cuò)誤請參SMF的某個(gè)日志文件等 。SMF之所以能夠提供這些信息是由于啟動和停止方法提供了相關(guān)的信息 。SMF要求所有啟動和停止方法必須返回一組特定的值,具體值可以參看Solaris 10操作系統(tǒng)/lib/svc/share/smf_include.sh文件尾部 。
本例中,表2所示的/etc/init.d/myapp.sh可能返回3種值,$CONFIG_ERROR、$FATAL_ERROR和$RUN_OK ?,F(xiàn)目標(biāo)是要替換原返回值為相應(yīng)的SMF返回值,如果沒有相應(yīng)的SMF返回值,則替換為最合適的SMF返回值,使服務(wù)非正常退出時(shí),SMF能夠報(bào)告可令人接受的錯(cuò)誤原因 。本例修改方法如下:
1. 首先,將表2所示的/etc/init.d/myapp.sh文件拷貝到開發(fā)目錄下,比如/export/home/smfdemo目錄下 。后面步驟中所有修改都改在拷貝內(nèi) 。
2. 通過增加“. /lib/svc/share/smf_include.sh到myapp.sh頭部,將SMF所需的各返回變量和過程包含到myapp.sh腳本 。
3. 替換“exit $CONFIG_ERROR為“exit $SMF_EXIT_ERR_CONFIG,因?yàn)?SMF_EXIT_ERR_CONFIG與原退出碼$CONFIG_ERROR退出原因最相近 。
4. 替換“exit $FATAL_ERROR為“exit $SMF_EXIT_ERR_FATAL,因?yàn)?SMF_EXIT_ERR_FATAL與原退出碼$FATAL_ERROR退出原因最相近 。
5. 替換“exit $RUN_OK為“exit $SMF_EXIT_OK,因?yàn)?SMF_EXIT_OK與原退出碼$RUN_OK退出原因最相近 。
6. 刪除stop case及其操作 。因?yàn)閟top方法已在myapp.xml中另行處理,不再需要myapp.sh了 。
7. 修改default case中的echo,以反映正確的usage 。
修改后的myapp.sh如表4所示 。至此,所有前期準(zhǔn)備工作都已完成,下面就可以進(jìn)行部署了 。
表4. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 #!/sbin/sh
###############################################################################
# /export/home/smfdemo/myapp.sh #
###############################################################################
. /lib/svc/share/smf_include.sh
RUN_OK=0
CONFIG_ERROR=1
FATAL_ERROR=2
case "$1" in
'start')
/export/home/hunter/smf/myapp_smf
if [ $? -eq $CONFIG_ERROR ]; then

推薦閱讀