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

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

SMF功能概覽
Solaris 10中的SMF提供了強大的服務(wù)管理功能 。以下是一部分重要的功能:
1. SMF向系統(tǒng)管理員提供統(tǒng)一的服務(wù)管理平臺,利用svcs(1)命令就可以查看SMF所轄的各種服務(wù),利用svccfg(1M)和svCADm(1M)命令可以配置各種服務(wù)和管理各種服務(wù) 。對于傳統(tǒng)Unix,系統(tǒng)管理員必須記住各種服務(wù)不同的啟動/停止方法、配置修改方法、服務(wù)狀態(tài)及日志查詢方法而言,SMF統(tǒng)一管理平臺極大地降低了系統(tǒng)管理的難度,也降低了系統(tǒng)管理出錯的機率 。
2. SMF提供各服務(wù)間的依賴關(guān)系設(shè)定,可以自動按依賴關(guān)系順序啟動各服務(wù) 。這對于傳統(tǒng)UNIX以rc腳本文件名排列先后決定啟動/停止順序而言,SMF提供了無可比擬的完善的管理能力 。
3. 并行啟動不相互依賴的服務(wù),從而使系統(tǒng)啟動更快 。由于各服務(wù)的依賴關(guān)系在SMF中有明確的定義,所以不相干的服務(wù)完全可以并行啟動而不必擔心沖突 。
4. 自動偵測所轄服務(wù)的運行狀態(tài),在必要時可以重啟服務(wù)或停止服務(wù) 。作為預(yù)測性自愈技術(shù)(Predictive Self-Healing)的組成部分,SMF可以對所轄服務(wù)進行狀態(tài)監(jiān)控 。根據(jù)服務(wù)的需要,SMF可以在服務(wù)進程不存在時,自動重啟服務(wù),或者在服務(wù)所依賴關(guān)系發(fā)生問題時,重啟服務(wù) 。也可以在服務(wù)連續(xù)發(fā)生問題時,將服務(wù)置為維護(maintenance)狀態(tài) 。
當然,SMF的管理機制并不排斥傳統(tǒng)rc腳本運行服務(wù)的機制,以最大程度兼容傳統(tǒng)方式的運作 。有關(guān)SMF更多的介紹,請參看Solaris Service Management Facility - Quickstart Guide 。
一個簡單的服務(wù)程序
<表1是一個簡單的程序myapp.c,它運行后將成為后臺守護進程存在于系統(tǒng)中,并每間隔5秒鐘向日志文件/tmp/myapp.log插入一行記錄以報告自己的存在 。雖然它實際上不向外提供任何服務(wù),但該程序模擬了一般服務(wù)程序的設(shè)計結(jié)構(gòu)和運行模式 。即,程序運行后以守護進程形式存在于系統(tǒng),程序頭部有模擬服務(wù)配置read_config()和初始化app_init()邏輯,中部使用sleep(5)模擬等待服務(wù)請求邏輯,通過向日志插入記錄模擬服務(wù)請求處理邏輯,然后返回至循環(huán)開始處sleep(5)繼續(xù)等待下一個服務(wù)請求等 。只要在此結(jié)構(gòu)上修改和擴充相應(yīng)的邏輯就可以將此程序修改為一個真正的服務(wù)程序 。本文要點是說明如何部署應(yīng)用為SMF服務(wù),所以僅采用此程序作為例子 。
表1.
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101/***************************************/
/* myapp.c */
/***************************************/
#include
#include
#include
#include
#include
#include
#include
/* global exit status code */
#define RUN_OK 0
#define CONFIG_ERROR 1
#define FATAL_ERROR 2
/* function declaration */
int read_config(void);
int app_init(void);
void daemonize(void);

推薦閱讀