欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

對(duì)進(jìn)程進(jìn)行監(jiān)控的方法和系統(tǒng)的制作方法

文檔序號(hào):6564657閱讀:190來源:國知局
專利名稱:對(duì)進(jìn)程進(jìn)行監(jiān)控的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)應(yīng)用領(lǐng)域,尤其涉及一種對(duì)進(jìn)程進(jìn)行監(jiān)控的方法和系統(tǒng)。
背景技術(shù)
在各種計(jì)算機(jī)或通信產(chǎn)品和系統(tǒng)的開發(fā)和運(yùn)行過程中,經(jīng)常會(huì)碰到進(jìn)程的異常退出,或者進(jìn)程陷入死循環(huán)的情況,如果產(chǎn)品或系統(tǒng)中沒有相應(yīng)的異常檢測機(jī)制和方法,將無法判斷出什么進(jìn)程異常退出、什么進(jìn)程陷入了死循環(huán),也就無法采取相應(yīng)的措施來進(jìn)行相應(yīng)的異常和恢復(fù)處理,因此,就無法保證產(chǎn)品和系統(tǒng)的高可靠性和自恢復(fù)性。
在目前的計(jì)算機(jī)操作系統(tǒng)中,一般都是通過進(jìn)程間共享資源(例如信號(hào)量公共模塊、共享內(nèi)存等)的方式來實(shí)現(xiàn)對(duì)進(jìn)程進(jìn)行監(jiān)控,以及被監(jiān)控進(jìn)程間的通信。例如當(dāng)某個(gè)被監(jiān)控進(jìn)程異常退出后,將向共享資源區(qū)記錄其異常退出相關(guān)信息,該異常退出相關(guān)信息在一段時(shí)間內(nèi)不會(huì)被清除。當(dāng)監(jiān)控進(jìn)程訪問了上述異常退出相關(guān)信息后,將獲得上述被監(jiān)控進(jìn)程的異常退出信息甚至異常退出原因。
但是,上述對(duì)進(jìn)程進(jìn)行監(jiān)控的方法在具體使用時(shí)有一定的局限性,該局限性主要表現(xiàn)在下述兩個(gè)方面1、將具體的檢測方法和通信方式綁定使用;
2、如果某進(jìn)程由于地址訪問非法(非法地址訪問),來不及向共享資源區(qū)記錄異常原因而進(jìn)程被迫異常退出,從而使得監(jiān)控進(jìn)程無法診斷其異常退出的具體原因。
現(xiàn)有技術(shù)中一種進(jìn)程自動(dòng)恢復(fù)方法的具體處理過程為首先將一個(gè)需要進(jìn)行監(jiān)控的進(jìn)程作為父進(jìn)程,由父進(jìn)程調(diào)用fork函數(shù)產(chǎn)生多個(gè)子進(jìn)程,該子進(jìn)程具備與父進(jìn)程相同的資源和屬性,該父進(jìn)程作為監(jiān)控進(jìn)程,該多個(gè)子進(jìn)程作為工作組進(jìn)程。
上述父進(jìn)程對(duì)上述工作組進(jìn)程進(jìn)行監(jiān)控。父進(jìn)程和工作組進(jìn)程通過互訪信號(hào)量公共模塊進(jìn)行通信,通過信號(hào)量的變化,父進(jìn)程可以監(jiān)控工作組進(jìn)程中的每個(gè)子進(jìn)程是否異常。
當(dāng)父進(jìn)程監(jiān)控到工作組進(jìn)程中的某個(gè)子進(jìn)程異常退出時(shí),則父進(jìn)程進(jìn)行報(bào)警。然后,父進(jìn)程通過fork函數(shù)獲取該異常退出的子進(jìn)程的標(biāo)識(shí)符,并調(diào)用函數(shù)關(guān)閉該子進(jìn)程,同時(shí)關(guān)閉工作組進(jìn)程中的其它子進(jìn)程。
上述父進(jìn)程重新創(chuàng)建多個(gè)子進(jìn)程并作為新的工作組進(jìn)程,監(jiān)控進(jìn)程對(duì)新的工作組進(jìn)程進(jìn)行實(shí)時(shí)監(jiān)控。
上述現(xiàn)有技術(shù)中進(jìn)程自動(dòng)恢復(fù)方法的缺點(diǎn)為1、需要通過專門的互斥機(jī)制來實(shí)現(xiàn)信號(hào)量公共模塊的互斥讀寫;2、父進(jìn)程只能檢測子進(jìn)程的一部分異常退出原因,并不能診斷所有異常退出原因(地址訪問非法等),從而將導(dǎo)致后續(xù)的分析定位工作很難開展。
現(xiàn)有技術(shù)中另一種進(jìn)程自動(dòng)恢復(fù)方法的具體處理過程為首先設(shè)置并啟動(dòng)監(jiān)控進(jìn)程,該監(jiān)控進(jìn)程等待普通進(jìn)程向其注冊(cè)。
啟動(dòng)各普通進(jìn)程并向上述監(jiān)控進(jìn)程進(jìn)行注冊(cè),注冊(cè)成功后,監(jiān)控進(jìn)程為各普通進(jìn)程分別分配一個(gè)單件模式的共享內(nèi)存對(duì)象,各普通進(jìn)程用分配的共享內(nèi)存對(duì)象初始化其共享內(nèi)存。
各普通進(jìn)程在共享內(nèi)存中記錄其運(yùn)行信息,監(jiān)控進(jìn)程利用監(jiān)控進(jìn)程與普通進(jìn)程定時(shí)握手的機(jī)制,獲取各普通進(jìn)程的運(yùn)行信息,根據(jù)該運(yùn)行信息實(shí)時(shí)判斷是否有普通進(jìn)程異常退出。
當(dāng)監(jiān)控進(jìn)程判斷有個(gè)普通進(jìn)程異常退出后,讀出該異常退出的普通進(jìn)程對(duì)應(yīng)的共享內(nèi)存對(duì)象信息,將讀出的共享內(nèi)存對(duì)象信息存儲(chǔ)到一個(gè)信息文件中,關(guān)閉該異常退出的普通進(jìn)程對(duì)應(yīng)的共享內(nèi)存對(duì)象。
然后,監(jiān)控進(jìn)程向客戶報(bào)告異常退出的普通進(jìn)程信息,并將上述存儲(chǔ)的信息文件報(bào)告給客戶。
上述現(xiàn)有技術(shù)中進(jìn)程自動(dòng)恢復(fù)方法的缺點(diǎn)為1、需要通過專門的互斥機(jī)制(加鎖)等來實(shí)現(xiàn)共享內(nèi)存的互斥讀寫;2、將進(jìn)程的異常退出檢測方法與具體握手的通信平臺(tái)以及共享內(nèi)存綁定使用,導(dǎo)致該方法使用起來不靈活;3、該方法很難監(jiān)控到進(jìn)程由于訪問非法地址而出現(xiàn)的異常退出,因?yàn)楫?dāng)普通進(jìn)程試圖修改寫保護(hù)的地址空間內(nèi)容出現(xiàn)異常時(shí),該普通進(jìn)程將來不及向共享內(nèi)存區(qū)寫相應(yīng)異常信息就立即異常退出,由于共享內(nèi)存區(qū)沒有該異常退出的普通進(jìn)程的相關(guān)信息,因而監(jiān)控進(jìn)程就不會(huì)確切知道普通進(jìn)程的異常退出原因。

發(fā)明內(nèi)容
本發(fā)明的目的是提供一種對(duì)進(jìn)程進(jìn)行監(jiān)控的方法和系統(tǒng),從而可以對(duì)子進(jìn)程的異常退出等進(jìn)行實(shí)時(shí)監(jiān)控。
本發(fā)明的目的是通過以下技術(shù)方案實(shí)現(xiàn)的一種對(duì)進(jìn)程進(jìn)行監(jiān)控的方法,包括步驟在子進(jìn)程退出時(shí),系統(tǒng)向所述子進(jìn)程的父進(jìn)程發(fā)送指定信號(hào),所述指定信號(hào)包括進(jìn)程標(biāo)識(shí),一個(gè)進(jìn)程標(biāo)識(shí)對(duì)應(yīng)一個(gè)子進(jìn)程;
所述父進(jìn)程根據(jù)接收到的所述指定信號(hào)識(shí)別出所述退出的子進(jìn)程。
一種對(duì)進(jìn)程進(jìn)行監(jiān)控的系統(tǒng),包括子進(jìn)程處理單元用于在子進(jìn)程退出時(shí),通過系統(tǒng)內(nèi)核向所述子進(jìn)程的父進(jìn)程發(fā)送指定信號(hào),所述指定信號(hào)包括進(jìn)程標(biāo)識(shí),一個(gè)進(jìn)程標(biāo)識(shí)對(duì)應(yīng)一個(gè)子進(jìn)程;父進(jìn)程處理單元用于根據(jù)接收到的所述指定信號(hào)識(shí)別出所述退出的子進(jìn)程。
由上述本發(fā)明提供的技術(shù)方案可以看出,本發(fā)明通過在在子進(jìn)程退出時(shí),系統(tǒng)內(nèi)核向所述子進(jìn)程的父進(jìn)程發(fā)送指定信號(hào),父進(jìn)程根據(jù)接收到的所述指定信號(hào)識(shí)別出所述退出的子進(jìn)程,從而實(shí)現(xiàn)父進(jìn)程對(duì)子進(jìn)程的異常退出等進(jìn)行實(shí)時(shí)監(jiān)控與檢測,并且可以監(jiān)控到各種形式的子進(jìn)程退出情況及其相應(yīng)的異常退出原因。和現(xiàn)有技術(shù)相比,具有以下優(yōu)點(diǎn)1、本發(fā)明所述方法基于信號(hào)機(jī)制,由于信號(hào)在操作系統(tǒng)中屬于一種軟中斷機(jī)制,響應(yīng)及時(shí),因此,本發(fā)明可以對(duì)進(jìn)程的異常退出等進(jìn)行真正意義上的實(shí)時(shí)監(jiān)控,并且可以及時(shí)進(jìn)行相應(yīng)的異常處理,最大程度地避免了因?yàn)楫惓L幚淼牟患皶r(shí)而導(dǎo)致的異常蔓延,甚至系統(tǒng)的崩潰。2、本發(fā)明所述方法使用靈活,不需要進(jìn)行進(jìn)程間資源的互斥控制。而進(jìn)程間資源的互斥控制一旦操作不適,將導(dǎo)致災(zāi)難性后果。
3、本發(fā)明所述方法監(jiān)控的異常范圍更廣,父進(jìn)程可以監(jiān)控到各種形式的子進(jìn)程退出情況及其相應(yīng)的異常退出原因,無論是訪問資源的不當(dāng)導(dǎo)致的異常退出,或者是進(jìn)程陷入死循環(huán)的異常退出、或者是子進(jìn)程調(diào)用exit主動(dòng)退出、或者完成所有功能而正常退出。
4、本發(fā)明所述方法從用戶的角度將異常情況記錄到日志中,可理解性強(qiáng),方便對(duì)進(jìn)程進(jìn)行定位分析。
5、本發(fā)明所述方法將進(jìn)程心跳監(jiān)控和檢測機(jī)制與需要的通信平臺(tái)分開,而沒有綁定使用,因而通信平臺(tái)可以是根據(jù)需要靈活地基于共享內(nèi)存、消息隊(duì)列、或者管道、甚至SOCKET等機(jī)制。


圖1為本發(fā)明所述方法的實(shí)施例1的處理流程圖;圖2為本發(fā)明所述方法的實(shí)施例2的處理流程圖;圖3為本發(fā)明所述對(duì)進(jìn)程進(jìn)行監(jiān)控的系統(tǒng)的實(shí)施例的結(jié)構(gòu)圖。
具體實(shí)施例方式
本發(fā)明提供了一種對(duì)進(jìn)程進(jìn)行監(jiān)控的方法和系統(tǒng)。本發(fā)明實(shí)施例在子進(jìn)程退出時(shí),系統(tǒng)內(nèi)核向所述子進(jìn)程的父進(jìn)程發(fā)送攜帶進(jìn)程標(biāo)識(shí)等信息的指定信號(hào),父進(jìn)程根據(jù)接收到的所述指定信號(hào)識(shí)別出所述退出的子進(jìn)程以及退出原因,從而實(shí)現(xiàn)了父進(jìn)程對(duì)子進(jìn)程的異常退出等進(jìn)行實(shí)時(shí)監(jiān)控與檢測,并進(jìn)行相應(yīng)的異常處理。
本發(fā)明所述方法需要產(chǎn)品或系統(tǒng)上計(jì)算機(jī)的操作系統(tǒng)支持下述機(jī)制在子進(jìn)程退出時(shí),向父進(jìn)程主動(dòng)發(fā)送指定信號(hào),通知父進(jìn)程目前有子進(jìn)程退出。目前LINUX操作系統(tǒng)支持該機(jī)制。
本發(fā)明所述方法的實(shí)施例1的處理流程如圖1所示,包括如下步驟步驟1-1在父進(jìn)程上首先設(shè)置處理指定信號(hào)的信號(hào)處理函數(shù)。該指定信號(hào)為子進(jìn)程退出時(shí),通過系統(tǒng)內(nèi)核向父進(jìn)程發(fā)送的指定信號(hào)。
步驟1-2父進(jìn)程按功能邏輯關(guān)系創(chuàng)建一組子進(jìn)程,并且在創(chuàng)建子進(jìn)程完成后,父進(jìn)程需要記錄各子進(jìn)程的系統(tǒng)標(biāo)識(shí)。同時(shí),父進(jìn)程將各子進(jìn)程的系統(tǒng)標(biāo)識(shí)信息和其它相關(guān)信息進(jìn)行存儲(chǔ),在實(shí)際應(yīng)用中,可以將各子進(jìn)程的系統(tǒng)標(biāo)識(shí)信息和其它相關(guān)信息(如進(jìn)程名稱等)存儲(chǔ)在數(shù)據(jù)庫中。
步驟1-3各子進(jìn)程被成功創(chuàng)建后,按照自己的例程運(yùn)行。一旦子進(jìn)程由于某種原因退出(無論是正?;虍惓M顺?,系統(tǒng)內(nèi)核自動(dòng)向父進(jìn)程發(fā)送攜帶退出子進(jìn)程的系統(tǒng)標(biāo)識(shí)信息和相關(guān)退出原因信息的上述指定信號(hào),所述系統(tǒng)標(biāo)識(shí)信息。
步驟1-4父進(jìn)程接收到該指定信號(hào)后,調(diào)用上述設(shè)置的信號(hào)處理函數(shù)來處理接收到的指定信號(hào),通過該信號(hào)處理函數(shù)獲取接收到的指定信號(hào)中攜帶的退出子進(jìn)程的系統(tǒng)標(biāo)識(shí)及其相關(guān)退出原因。同時(shí),父進(jìn)程根據(jù)退出子進(jìn)程的系統(tǒng)標(biāo)識(shí)查詢上述數(shù)據(jù)庫,識(shí)別出該退出子進(jìn)程,獲得該退出子進(jìn)程的其它相關(guān)信息。
步驟1-5父進(jìn)程根據(jù)獲得的退出子進(jìn)程的相關(guān)退出原因和其它相關(guān)信息,以及退出子進(jìn)程對(duì)整個(gè)系統(tǒng)(或父進(jìn)程、或其它子進(jìn)程)的重要性進(jìn)行相應(yīng)的異常處理。
在整個(gè)上述處理過程中,父進(jìn)程需要進(jìn)行相應(yīng)的日志記錄處理,便于后續(xù)的異常定位分析。
以LINUX操作系統(tǒng)為例,上述本發(fā)明所述方法的處理過程如下在父進(jìn)程中安裝基于SIGCHLD的信號(hào)處理函數(shù)。因?yàn)樵贚INUX操作系統(tǒng)中,在子進(jìn)程退出時(shí),無論子進(jìn)程是由于什么原因異常退出、或者子進(jìn)程調(diào)用exit庫函數(shù)主動(dòng)退出、或者子進(jìn)程完成所有功能后正常退出后,都會(huì)使內(nèi)核向父進(jìn)程發(fā)送SIGCHLD信號(hào)。因此,父進(jìn)程必須首先建立SIGCHLD信號(hào)的信號(hào)處理函數(shù),以時(shí)刻監(jiān)控子進(jìn)程的異常退出情況。
父進(jìn)程然后按功能邏輯關(guān)系創(chuàng)建一組子進(jìn)程。父進(jìn)程在創(chuàng)建各個(gè)子進(jìn)程時(shí),必須把SIGCHLD信號(hào)類型信息傳遞給內(nèi)核,以便子進(jìn)程在退出時(shí),內(nèi)核會(huì)發(fā)送SIGCHLD信號(hào)給父進(jìn)程,通過該SIGCHLD信號(hào)通知父進(jìn)程當(dāng)前有子進(jìn)程退出。此外,在LINUX操作系統(tǒng)中,父進(jìn)程在創(chuàng)建子進(jìn)程時(shí),需要獲取的進(jìn)程標(biāo)識(shí)就是該子進(jìn)程的系統(tǒng)pid號(hào)。然后父進(jìn)程將這些子進(jìn)程的pid號(hào)和相關(guān)子進(jìn)程信息(如進(jìn)程名稱)組織成子進(jìn)程管理數(shù)據(jù)庫表并進(jìn)行存儲(chǔ),以供后續(xù)的查詢使用。
在某個(gè)子進(jìn)程無論由于什么原因退出后,內(nèi)核都會(huì)向父進(jìn)程發(fā)送SIGCHLD信號(hào)以通知有子進(jìn)程退出。
父進(jìn)程接收到內(nèi)核發(fā)送的SIGCHLD信號(hào)后,調(diào)用預(yù)先設(shè)置的SIGCHLD的信號(hào)處理函數(shù),并在該信號(hào)處理函數(shù)中,通過wait或者waitpid系統(tǒng)調(diào)用獲取退出的子進(jìn)程的系統(tǒng)pid號(hào)和退出狀態(tài)碼,跟據(jù)退出狀態(tài)碼來獲得子進(jìn)程退出的具體原因,并且父進(jìn)程根據(jù)退出子進(jìn)程的pid號(hào)從子進(jìn)程管理數(shù)據(jù)庫表中識(shí)別出退出的子進(jìn)程。同時(shí),父進(jìn)程必須將捕獲到的子進(jìn)程的異常信息記錄成日志,便于后續(xù)的異常定位分析。
父進(jìn)程可以根據(jù)各個(gè)子進(jìn)程對(duì)整個(gè)系統(tǒng)或者對(duì)父進(jìn)程或者對(duì)其他子進(jìn)程的重要性和穩(wěn)定性因素(父進(jìn)程預(yù)先設(shè)定),將子進(jìn)程分成兩類對(duì)整個(gè)系統(tǒng)或父進(jìn)程有比較大的影響的基本子進(jìn)程和普通子進(jìn)程。
父進(jìn)程通過上述過程檢測到子進(jìn)程異常退出后,如果檢測到對(duì)整個(gè)系統(tǒng)有比較大的影響的基本子進(jìn)程異常退出后,則父進(jìn)程必須決定重啟整個(gè)系統(tǒng);如果檢測到對(duì)父進(jìn)程有比較大的影響的基本子進(jìn)程異常退出后,則父進(jìn)程重新創(chuàng)建所有子進(jìn)程;如果檢測到普通子進(jìn)程異常退出后,則父進(jìn)程僅僅只需重新創(chuàng)建該子進(jìn)程即可。同時(shí),父進(jìn)程在重新創(chuàng)建子進(jìn)程后,需要實(shí)時(shí)更新上述子進(jìn)程管理數(shù)據(jù)庫表。
上述本發(fā)明所述方法的實(shí)現(xiàn)非常靈活,不存在資源的互斥訪問保護(hù)問題,可以實(shí)現(xiàn)實(shí)時(shí)檢測到子進(jìn)程的異常退出,以及即使由于地址非法訪問導(dǎo)致進(jìn)程異常退出,父進(jìn)程也會(huì)檢測到具體的異常原因。同時(shí)在檢測到子進(jìn)程異常退出后,可以將子進(jìn)程異常信息進(jìn)行記錄,便于用戶的理解和以后的異常定位分析。
為進(jìn)一步檢測出子進(jìn)程陷入死循環(huán)的進(jìn)程異常情況,本發(fā)明實(shí)施例還提出另一種基于消息機(jī)制的進(jìn)程心跳監(jiān)控與檢測以及相應(yīng)的異常處理方法。該改進(jìn)方法實(shí)現(xiàn)的前提是用戶必須首先實(shí)現(xiàn)進(jìn)程間的消息通信機(jī)制,該消息通信機(jī)制可以為共享內(nèi)存、消息隊(duì)列、SOCKET、管道等,另外在系統(tǒng)中還必須設(shè)置一個(gè)監(jiān)控任務(wù),該監(jiān)控任務(wù)可以是能獨(dú)立調(diào)度的進(jìn)程或者線程,然后通過上述消息通信機(jī)制和監(jiān)控任務(wù)來進(jìn)行進(jìn)程的心跳報(bào)告和檢測處理。
改進(jìn)后的本發(fā)明所述方法的實(shí)施例2的具體處理流程如圖2所示,包括如下步驟步驟21啟動(dòng)監(jiān)控任務(wù),在監(jiān)控任務(wù)初始化時(shí),創(chuàng)建和啟動(dòng)進(jìn)程心跳檢測定時(shí)器。該進(jìn)程心跳檢測定時(shí)器為一個(gè)循環(huán)定時(shí)器,按照設(shè)定的時(shí)長定時(shí)觸發(fā)。該監(jiān)控任務(wù)可以是能獨(dú)立調(diào)度的進(jìn)程或者線程,比如,可以是父進(jìn)程創(chuàng)建的一個(gè)子進(jìn)程。
步驟22各進(jìn)程在初始化時(shí),或者在需要被監(jiān)控時(shí),向監(jiān)控任務(wù)發(fā)送攜帶進(jìn)程標(biāo)識(shí)和最大允許心跳時(shí)長信息的心跳監(jiān)控注冊(cè)消息,通知監(jiān)控任務(wù)對(duì)該進(jìn)程進(jìn)行心跳監(jiān)控,同時(shí)創(chuàng)建和啟動(dòng)心跳報(bào)告定時(shí)器,該心跳報(bào)告定時(shí)器為一個(gè)循環(huán)定時(shí)器,按照設(shè)定的時(shí)長定時(shí)觸發(fā)。
步驟23監(jiān)控任務(wù)接收到某個(gè)進(jìn)程發(fā)送的心跳監(jiān)控注冊(cè)消息后,獲取該心跳監(jiān)控注冊(cè)消息中的進(jìn)程標(biāo)識(shí)和最大允許心跳時(shí)長信息,并保存到監(jiān)控任務(wù)的監(jiān)控狀態(tài)表中,并針對(duì)該進(jìn)程設(shè)置并保存一個(gè)初始的監(jiān)控時(shí)長計(jì)數(shù),該初始的監(jiān)控時(shí)長計(jì)數(shù)一般設(shè)為最大允許心跳時(shí)長。監(jiān)控任務(wù)同時(shí)在監(jiān)控狀態(tài)表中添加一條記錄,該記錄包括進(jìn)程標(biāo)識(shí)、最大允許心跳時(shí)長、當(dāng)前監(jiān)控時(shí)長。
各個(gè)進(jìn)程在注冊(cè)受監(jiān)控意愿時(shí),根據(jù)各個(gè)進(jìn)程的實(shí)際處理能力情況注冊(cè)不同的最大允許心跳時(shí)長。例如,某個(gè)進(jìn)程在處理具體功能時(shí)需要的時(shí)間比較長,則可以注冊(cè)比較大的最大允許心跳時(shí)長,反之亦可。此外,一般監(jiān)控任務(wù)的進(jìn)程心跳檢測定時(shí)器的時(shí)長小于被監(jiān)控進(jìn)程的心跳報(bào)告定時(shí)器時(shí)長。
步驟24當(dāng)某個(gè)進(jìn)程的心跳報(bào)告定時(shí)器的定時(shí)時(shí)間到達(dá)后,將觸發(fā)該心跳報(bào)告定時(shí)器,并向監(jiān)控任務(wù)上報(bào)一次心跳,即向監(jiān)控任務(wù)發(fā)送一個(gè)心跳上報(bào)消息。
步驟25監(jiān)控任務(wù)接收到上述進(jìn)程上報(bào)的心跳消息后,則將當(dāng)前針對(duì)該進(jìn)程的監(jiān)控時(shí)長計(jì)數(shù)恢復(fù)為其初始值(一般為心跳最大允許時(shí)長)。
步驟26當(dāng)監(jiān)控任務(wù)的進(jìn)程心跳檢測定時(shí)器的定時(shí)時(shí)間到達(dá)時(shí),將觸發(fā)該進(jìn)程心跳檢測定時(shí)器。此時(shí),如果監(jiān)控任務(wù)還沒有收到某個(gè)被監(jiān)控進(jìn)程的心跳消息,則監(jiān)控任務(wù)對(duì)保存的該被監(jiān)控進(jìn)程的監(jiān)控時(shí)長計(jì)數(shù)進(jìn)行減1操作。當(dāng)某個(gè)被監(jiān)控進(jìn)程的監(jiān)控時(shí)長計(jì)數(shù)為0或者小于0時(shí),則表明該被監(jiān)控進(jìn)程處于異常情況(已經(jīng)異常退出或者陷入死循環(huán)),則進(jìn)行相應(yīng)的下述異常處理。
監(jiān)控任務(wù)可以通過兩種方式進(jìn)行異常處理第一種是將該進(jìn)程的異常情況和相關(guān)信息上報(bào)給專門的處理異常的進(jìn)程,具體的后續(xù)異常處理(比如刪除該進(jìn)程、重新創(chuàng)建該進(jìn)程等)由該進(jìn)程負(fù)責(zé);另一種方式則是直接由監(jiān)控任務(wù)進(jìn)行刪除出現(xiàn)異常情況的進(jìn)程,同時(shí)將該異常處理記錄成日志,便于后續(xù)定位分析。
步驟27受心跳監(jiān)控的進(jìn)程可以通過向監(jiān)控任務(wù)發(fā)送心跳注銷消息來注銷受監(jiān)控狀態(tài),并同時(shí)關(guān)閉其心跳上報(bào)定時(shí)器,監(jiān)控任務(wù)接收到該心跳注銷消息后,取消對(duì)該進(jìn)程的心跳監(jiān)控。
在實(shí)際應(yīng)用中,還可以將上述本發(fā)明所述方法及其改進(jìn)方法融合使用,成為一種監(jiān)控范圍更廣、異常檢測更加準(zhǔn)確的實(shí)時(shí)監(jiān)控和檢測方案。針對(duì)該方案的本發(fā)明所述方法的實(shí)施例3的具體處理過程如下1、首先在父進(jìn)程上設(shè)置處理子進(jìn)程退出相關(guān)的指定信號(hào)的信號(hào)處理函數(shù),并且按照功能邏輯關(guān)系創(chuàng)建一組子進(jìn)程。同時(shí)父進(jìn)程在成功創(chuàng)建子進(jìn)程后需要記錄各子進(jìn)程的系統(tǒng)標(biāo)識(shí),并且將各子進(jìn)程的系統(tǒng)標(biāo)識(shí)信息和其它相關(guān)信息(如進(jìn)程名稱等)存儲(chǔ)在數(shù)據(jù)庫中。然后,父進(jìn)程將其創(chuàng)建的某個(gè)子進(jìn)程設(shè)置為監(jiān)控任務(wù),父進(jìn)程也可以將其它進(jìn)程或線程設(shè)置為監(jiān)控任務(wù)。
2、啟動(dòng)上述監(jiān)控任務(wù),在監(jiān)控任務(wù)初始化時(shí),創(chuàng)建和啟動(dòng)進(jìn)程心跳檢測定時(shí)器;各子進(jìn)程在初始化時(shí),根據(jù)需要向監(jiān)控任務(wù)注冊(cè)受心跳監(jiān)控的意愿,同時(shí)創(chuàng)建和啟動(dòng)心跳報(bào)告定時(shí)器。監(jiān)控任務(wù)對(duì)各個(gè)被監(jiān)控進(jìn)程進(jìn)行上述心跳監(jiān)控。
3、當(dāng)父進(jìn)程接收到內(nèi)核發(fā)出的子進(jìn)程異常退出的指定信號(hào)后,根據(jù)該指定信號(hào)識(shí)別出退出的子進(jìn)程,先將該子進(jìn)程的相關(guān)信息(如該子進(jìn)程的系統(tǒng)標(biāo)識(shí)、進(jìn)程名等)通過消息方式通知給監(jiān)控任務(wù),然后再進(jìn)行相應(yīng)的異常處理。監(jiān)控任務(wù)接收該通知后,立即取消對(duì)該子進(jìn)程的心跳監(jiān)控。
4、當(dāng)監(jiān)控任務(wù)檢測某受監(jiān)控進(jìn)程出現(xiàn)異常(陷入死循環(huán)或者異常退出),則將相關(guān)信息(該受監(jiān)控進(jìn)程的系統(tǒng)標(biāo)識(shí)、進(jìn)程名)通知給受監(jiān)控進(jìn)程的父進(jìn)程,由其父進(jìn)程進(jìn)行相應(yīng)的異常處理,即根據(jù)受監(jiān)控進(jìn)程對(duì)系統(tǒng)、或?qū)ζ涓高M(jìn)程、或?qū)ζ渌舆M(jìn)程的重要性和穩(wěn)定性影響進(jìn)行相應(yīng)的處理。
本發(fā)明所述對(duì)進(jìn)程進(jìn)行監(jiān)控的系統(tǒng)的實(shí)施例的結(jié)構(gòu)如圖3所示,包括如下模塊子進(jìn)程處理單元用于在子進(jìn)程退出時(shí),通過系統(tǒng)內(nèi)核向所述子進(jìn)程的父進(jìn)程發(fā)送指定信號(hào)。
父進(jìn)程處理單元用于根據(jù)接收到的所述指定信號(hào)識(shí)別出所述退出的子進(jìn)程。
上述父進(jìn)程處理單元具體包括子進(jìn)程創(chuàng)建模塊用于按功能邏輯關(guān)系創(chuàng)建子進(jìn)程,并且設(shè)置創(chuàng)建的各個(gè)子進(jìn)程的進(jìn)程標(biāo)識(shí);進(jìn)程信息維護(hù)模塊用于將子進(jìn)程創(chuàng)建模塊創(chuàng)建的各個(gè)子進(jìn)程的進(jìn)程標(biāo)識(shí)和進(jìn)程名稱信息進(jìn)行存儲(chǔ);退出子進(jìn)程識(shí)別模塊用于調(diào)用信號(hào)處理函數(shù)對(duì)接收到的所述指定信號(hào)進(jìn)行處理,獲取所述退出的子進(jìn)程的進(jìn)程標(biāo)識(shí)信息,識(shí)別出所述退出的子進(jìn)程。
上述退出子進(jìn)程識(shí)別模塊包括進(jìn)程退出信息記錄模塊用于通過調(diào)用所述信號(hào)處理函數(shù)對(duì)接收到的所述指定信號(hào)進(jìn)行處理,獲取所述退出的子進(jìn)程的進(jìn)程標(biāo)識(shí)和退出原因信息,將該進(jìn)程標(biāo)識(shí)和退出原因信息進(jìn)行記錄;異常處理模塊用于獲得所述子進(jìn)程異常退出后,根據(jù)該子進(jìn)程和整個(gè)系統(tǒng)、父進(jìn)程或者其它子進(jìn)程的關(guān)系,進(jìn)行相應(yīng)的異常處理。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種對(duì)進(jìn)程進(jìn)行監(jiān)控的方法,其特征在于,包括步驟A、在子進(jìn)程退出時(shí),系統(tǒng)向所述子進(jìn)程的父進(jìn)程發(fā)送指定信號(hào),所述指定信號(hào)包括進(jìn)程標(biāo)識(shí),一個(gè)進(jìn)程標(biāo)識(shí)對(duì)應(yīng)一個(gè)子進(jìn)程;B、所述父進(jìn)程根據(jù)接收到的所述指定信號(hào)識(shí)別出所述退出的子進(jìn)程。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述的步驟A具體包括A1、所述父進(jìn)程按功能邏輯關(guān)系創(chuàng)建子進(jìn)程,并且設(shè)置創(chuàng)建的各個(gè)子進(jìn)程的進(jìn)程標(biāo)識(shí);將各個(gè)子進(jìn)程的進(jìn)程標(biāo)識(shí)和進(jìn)程名稱信息進(jìn)行存儲(chǔ);A2、當(dāng)子進(jìn)程退出時(shí),系統(tǒng)內(nèi)核向所述父進(jìn)程發(fā)送攜帶所述退出的子進(jìn)程的進(jìn)程標(biāo)識(shí)的指定信號(hào)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述指定信號(hào)還攜帶所述退出的子進(jìn)程的退出原因信息。
4.根據(jù)權(quán)利要求1或2或3所述的方法,其特征在于,所述的步驟A還包括A3、在系統(tǒng)中設(shè)置監(jiān)控任務(wù),并在所述監(jiān)控任務(wù)中啟動(dòng)進(jìn)程心跳檢測定時(shí)器;A4、所述子進(jìn)程向所述監(jiān)控任務(wù)發(fā)送攜帶進(jìn)程標(biāo)識(shí)和最大允許心跳時(shí)長信息的心跳監(jiān)控注冊(cè)消息,并且啟動(dòng)心跳報(bào)告定時(shí)器;當(dāng)所述心跳報(bào)告定時(shí)器的定時(shí)時(shí)間到達(dá)后,所述子進(jìn)程向所述監(jiān)控任務(wù)發(fā)送心跳消息;A5、所述監(jiān)控任務(wù)根據(jù)接收到的心跳監(jiān)控注冊(cè)消息中攜帶的最大允許心跳時(shí)長信息設(shè)置初始的監(jiān)控時(shí)長計(jì)數(shù);所述監(jiān)控任務(wù)保存所述心跳監(jiān)控注冊(cè)消息中的進(jìn)程標(biāo)識(shí)、最大允許心跳時(shí)長信息和所述初始的監(jiān)控時(shí)長計(jì)數(shù),對(duì)所述子進(jìn)程進(jìn)行監(jiān)控。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述的步驟A5中對(duì)所述子進(jìn)程進(jìn)行監(jiān)控具體包括當(dāng)所述監(jiān)控任務(wù)中的進(jìn)程心跳檢測定時(shí)器的定時(shí)時(shí)間到達(dá)后,并且所述監(jiān)控任務(wù)還沒有收到被監(jiān)控子進(jìn)程發(fā)送的心跳消息,則所述監(jiān)控任務(wù)對(duì)所述被監(jiān)控子進(jìn)程相應(yīng)的監(jiān)控時(shí)長計(jì)數(shù)進(jìn)行減1操作;當(dāng)所述被監(jiān)控子進(jìn)程的監(jiān)控時(shí)長計(jì)數(shù)為0或者小于0時(shí),則所述監(jiān)控任務(wù)將所述監(jiān)控子進(jìn)程的進(jìn)程標(biāo)識(shí)信息發(fā)送給所述監(jiān)控子進(jìn)程的父進(jìn)程。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述的步驟A5中對(duì)所述子進(jìn)程進(jìn)行監(jiān)控還包括當(dāng)所述監(jiān)控任務(wù)接收到所述被監(jiān)控子進(jìn)程發(fā)送的心跳消息后,將當(dāng)前針對(duì)所述子進(jìn)程的監(jiān)控時(shí)長計(jì)數(shù)恢復(fù)為其初始值。
7.根據(jù)權(quán)利要求1或2或3所述的方法,其特征在于,所述的步驟B具體包括所述父進(jìn)程根據(jù)接收到的所述指定信號(hào)獲取所述退出的子進(jìn)程的進(jìn)程標(biāo)識(shí)信息,根據(jù)該進(jìn)程標(biāo)識(shí)信息識(shí)別出所述退出的子進(jìn)程。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述的所述父進(jìn)程根據(jù)接收到的所述指定信號(hào)獲取所述退出的子進(jìn)程的進(jìn)程標(biāo)識(shí)信息具體包括所述父進(jìn)程上設(shè)置有處理所述指定信號(hào)的信號(hào)處理函數(shù),所述父進(jìn)程調(diào)用所述信號(hào)處理函數(shù)對(duì)接收到的所述指定信號(hào)進(jìn)行處理,獲取所述退出的子進(jìn)程的進(jìn)程標(biāo)識(shí)信息。
9.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述的步驟B還包括所述父進(jìn)程根據(jù)接收到的所述指定信號(hào)獲取所述退出的子進(jìn)程的進(jìn)程標(biāo)識(shí)和退出原因信息,將該進(jìn)程標(biāo)識(shí)和退出原因信息進(jìn)行記錄。
10.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述的步驟B具體包括所述父進(jìn)程調(diào)用所述信號(hào)處理函數(shù)對(duì)接收到的所述指定信號(hào)進(jìn)行處理,獲取所述退出的子進(jìn)程的進(jìn)程標(biāo)識(shí)信息,將所述進(jìn)程標(biāo)識(shí)信息發(fā)送給所述監(jiān)控任務(wù),所述監(jiān)控任務(wù)停止對(duì)所述進(jìn)程標(biāo)識(shí)相應(yīng)的被監(jiān)控進(jìn)程的監(jiān)控。
11.一種對(duì)進(jìn)程進(jìn)行監(jiān)控的系統(tǒng),其特征在于,包括子進(jìn)程處理單元用于在子進(jìn)程退出時(shí),通過系統(tǒng)內(nèi)核向所述子進(jìn)程的父進(jìn)程發(fā)送指定信號(hào),所述指定信號(hào)包括進(jìn)程標(biāo)識(shí),一個(gè)進(jìn)程標(biāo)識(shí)對(duì)應(yīng)一個(gè)子進(jìn)程;父進(jìn)程處理單元用于根據(jù)接收到的所述指定信號(hào)識(shí)別出所述退出的子進(jìn)程。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于,所述父進(jìn)程處理單元具體包括子進(jìn)程創(chuàng)建模塊用于按功能邏輯關(guān)系創(chuàng)建子進(jìn)程,并且設(shè)置創(chuàng)建的各個(gè)子進(jìn)程的進(jìn)程標(biāo)識(shí);進(jìn)程信息維護(hù)模塊用于將子進(jìn)程創(chuàng)建模塊創(chuàng)建的各個(gè)子進(jìn)程的進(jìn)程標(biāo)識(shí)和進(jìn)程名稱信息進(jìn)行存儲(chǔ);退出子進(jìn)程識(shí)別模塊用于調(diào)用信號(hào)處理函數(shù)對(duì)接收到的所述指定信號(hào)進(jìn)行處理,獲取所述退出的子進(jìn)程的進(jìn)程標(biāo)識(shí)信息,識(shí)別出所述退出的子進(jìn)程。
13.根據(jù)權(quán)利要求12所述的系統(tǒng),其特征在于,所述退出子進(jìn)程識(shí)別模塊具體包括進(jìn)程退出信息記錄模塊用于通過調(diào)用所述信號(hào)處理函數(shù)對(duì)接收到的所述指定信號(hào)進(jìn)行處理,獲取所述退出的子進(jìn)程的進(jìn)程標(biāo)識(shí)和退出原因信息,將該進(jìn)程標(biāo)識(shí)和退出原因信息進(jìn)行記錄;異常處理模塊用于獲得所述子進(jìn)程異常退出后,根據(jù)該子進(jìn)程和整個(gè)系統(tǒng)、父進(jìn)程或者其它子進(jìn)程的關(guān)系,進(jìn)行相應(yīng)的異常處理。
全文摘要
本發(fā)明提供了一種對(duì)進(jìn)程進(jìn)行監(jiān)控的方法和系統(tǒng),該方法主要包括在子進(jìn)程退出時(shí),系統(tǒng)向所述子進(jìn)程的父進(jìn)程發(fā)送指定信號(hào),所述指定信號(hào)包括進(jìn)程標(biāo)識(shí),一個(gè)進(jìn)程標(biāo)識(shí)對(duì)應(yīng)一個(gè)子進(jìn)程;所述父進(jìn)程根據(jù)接收到的所述指定信號(hào)識(shí)別出所述退出的子進(jìn)程。該系統(tǒng)主要包括;子進(jìn)程處理單元和父進(jìn)程處理單元。利用本發(fā)明所述方法和系統(tǒng),從而可以對(duì)進(jìn)程的異常退出等進(jìn)行實(shí)時(shí)監(jiān)控,并且可以監(jiān)控到各種形式的子進(jìn)程退出情況及其相應(yīng)的異常退出原因。
文檔編號(hào)G06F9/46GK1996257SQ20061017056
公開日2007年7月11日 申請(qǐng)日期2006年12月26日 優(yōu)先權(quán)日2006年12月26日
發(fā)明者饒俊, 嚴(yán)海峰, 湯智龍 申請(qǐng)人:華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
越西县| 枣阳市| 临安市| 葫芦岛市| 常州市| 高尔夫| 安龙县| 玉林市| 永城市| 尼玛县| 晋中市| 墨脱县| 卢湾区| 丰台区| 县级市| 五大连池市| 洛扎县| 三都| 敦煌市| 泾川县| 枣庄市| 呼图壁县| 楚雄市| 二连浩特市| 正定县| 呼伦贝尔市| 河间市| 景德镇市| 鞍山市| 忻城县| 永福县| 天等县| 福安市| 朝阳市| 东城区| 河北省| 凤山市| 平谷区| 中西区| 中山市| 南京市|