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

使用libscf.so實現(xiàn)SMF服務(wù)refresh方法

Solaris 10的SMF機制向系統(tǒng)管理員提供了統(tǒng)一的服務(wù)管理平臺,利用它可方便地對所轄服務(wù)進(jìn)行配置和管理,還可以在必要的時候自動重啟服務(wù) 。SMF的配置功能不但可讓系統(tǒng)管理員在服務(wù)下線的狀態(tài)下通過svccfg(1M)配置服務(wù)屬性,還可以在服務(wù)聯(lián)機的狀態(tài)下結(jié)合使用svCADm refresh命令,動態(tài)配置和啟用最新屬性 。另外,SMF還提供編程接口API(包含在libscf.so庫中),利用它可以取代用戶的配置文件以及相應(yīng)的配置讀取解析邏輯,享受專業(yè)級配置工具svccfg(1M)帶來的便利 。本文將結(jié)合一個例子講述如何在應(yīng)用程序中使用libscf.so所提供的部分API實現(xiàn)SMF服務(wù)refresh方法 。
服務(wù)配置概述
對于大部分服務(wù)類應(yīng)用而言,為了適應(yīng)運行環(huán)境的多變性,一般都會在服務(wù)程序中編寫配置讀取模塊,在服務(wù)啟動時通過讀取配置來決定如何提供服務(wù) 。比如,一個典型的網(wǎng)絡(luò)服務(wù)可能在服務(wù)啟動時通過讀取配置文件決定網(wǎng)絡(luò)服務(wù)端口、服務(wù)日志路徑等 。配置的存在形式有多種,比如配置文件、數(shù)據(jù)庫記錄,甚至簡單到使用操作系統(tǒng)環(huán)境變量等 。無論配置采用何種形式存在,為了能獲取配置值,服務(wù)程序需要自行實現(xiàn)相應(yīng)的配置讀取和解析邏輯 。
除了在服務(wù)啟動時需要讀取配置外,有些行業(yè)領(lǐng)域要求服務(wù)應(yīng)用可在服務(wù)運行過程中具有動態(tài)采用新配置的功能 。這就要求開發(fā)人員編寫更復(fù)雜的邏輯以保證服務(wù)進(jìn)程在運行過程中可在適當(dāng)?shù)臅r機,重新讀取配置并采用新配置,同時又必須保證新配置的采用過程不會導(dǎo)致服務(wù)進(jìn)程不穩(wěn)定甚至崩潰 。動態(tài)讀取配置的時機可有多種方式,較簡單的方法比如,通過向服務(wù)進(jìn)程發(fā)送某個特定信號,服務(wù)進(jìn)程接到信號后重新讀取配置,然后根據(jù)新配置設(shè)置服務(wù)環(huán)境并繼續(xù)提供服務(wù) 。
SMF框架對服務(wù)配置的支持
在SMF中,配置被稱為屬性(property),配置值稱為屬性值(property value) 。利用svccfg(1M)工具可以設(shè)置服務(wù)的屬性和屬性值 。服務(wù)配置缺省保存在SMF全局資源庫/etc/svc/repository.db中 。SMF的svc.configd進(jìn)程負(fù)責(zé)存取資源庫 。當(dāng)其他SMF進(jìn)程或工具需要配置信息時,可以通過連接svc.configd進(jìn)程從資源庫中獲取配置,同樣也通過svc.configd將配置存入資源庫 。用戶服務(wù)程序也可以通過使用libscf.so提供的API與svc.configd進(jìn)程相連接,從資源庫中存取服務(wù)配置 。
配置SMF服務(wù)最簡單的方式是使用svccfg(1M)工具 。svccfg(1M)工具是一個交互式的配置修改工具,它包含許多簡單實用的命令(具體命令可以在進(jìn)入svccfg后使用help查詢) 。比如常用命令有:
import命令可將以xml格式定義的用戶服務(wù)加載為SMF服務(wù)并啟動運行 。
delete命令可以刪除用戶服務(wù) 。
list和select命令可以查看和選取系統(tǒng)中現(xiàn)有的服務(wù) 。
listprop、editprop、setprop、delprop命令可以查看和修改當(dāng)前服務(wù)的配置屬性 。
另外,SMF還支持配置快照(snapshot)功能,通過它可以保留服務(wù)在某一時刻的屬性配置,并在需要的時候可通過revert將當(dāng)前配置恢復(fù)為某一時刻的快照配置 。快照相關(guān)的命令包括listsnap,selectsnap和revert 。
無論采用何種方式修改了當(dāng)前服務(wù)的配置,這些修改只影響到資源庫而非正在運行的服務(wù)進(jìn)程 。如果要求當(dāng)前服務(wù)能夠馬上應(yīng)用新配置,則用戶在退出svccfg(1M)工具后需要使用svCADm refresh命令指示相關(guān)服務(wù)重新讀取配置并采用新配置 。
在SMF框架中,start和stop方法是服務(wù)必須提供的,這是由于SMF需要調(diào)用start和stop方法來啟動和停止相應(yīng)的服務(wù) 。而refresh方法則不是必要的,前提是用戶服務(wù)不需要動態(tài)刷新啟用新配置屬性 。如果用戶服務(wù)需要動態(tài)刷新配置屬性,則用戶服務(wù)在定義時,必須提供服務(wù)refresh方法,而相應(yīng)服務(wù)程序也必須實現(xiàn)適時重新讀取配置的邏輯 。

推薦閱讀