本公開涉及進程管理技術(shù)領(lǐng)域,尤其涉及一種用于進程管理的方法和裝置。
背景技術(shù):
近年來,互聯(lián)網(wǎng)技術(shù)和軟件技術(shù)快速發(fā)展,并廣泛用于各個領(lǐng)域。在日常工作生活中,通過智能設(shè)備和應用軟件的結(jié)合,可以實現(xiàn)滿足人們不同的需求,為工作和生活提供了諸多便利。在工業(yè)生產(chǎn)領(lǐng)域,可以通過軟件實現(xiàn)對生產(chǎn)設(shè)備的自動化控制和監(jiān)測等,能夠減少人工勞作,提高生產(chǎn)精度和效率。但是如果軟件運行過程中發(fā)生故障或異常,也會引起諸多問題。因此,現(xiàn)在對軟件的穩(wěn)定性和可靠性的要求越來越高。軟件的穩(wěn)定性和可靠性取決于其執(zhí)行過程中各個進程。然而現(xiàn)有進程管理技術(shù)中,一般是對進程占用資源的調(diào)控和優(yōu)化。而在進程狀態(tài)出現(xiàn)例如異常或錯誤等情況時,無法對進程進行及時有效的處理。
技術(shù)實現(xiàn)要素:
為克服相關(guān)技術(shù)中存在的問題,本公開提供一種用于進程管理的方法和裝置。
根據(jù)本公開實施例的第一方面,提供一種用于進程管理的方法,所述方法包括:加載待管理進程的配置文件;監(jiān)測所述待管理進程的運行狀態(tài);以及根據(jù)所述配置文件和所述待管理進程的運行狀態(tài)對所述待管理進程進行狀態(tài)控制。
優(yōu)選地,所述待管理進程包括一個或者一個以上的子進程,所述監(jiān)測所述待管理進程的運行狀態(tài)包括:針對所述待管理進程,監(jiān)測所述待管理進程中每個子進程的運行狀態(tài);根據(jù)所述待管理進程的所有子進程的運行狀態(tài)確定所述待管理進程的運行狀態(tài)。
優(yōu)選地,所述方法還包括:接收來自進程狀態(tài)機的、關(guān)于各個子進程的狀態(tài)信息,所述狀態(tài)信息包括子進程的進程名稱和運行狀態(tài)的對應關(guān)系;存儲所述狀態(tài)信息;所述監(jiān)測所述待管理進程中每個子進程的運行狀態(tài)包括:遍歷所述存儲的狀態(tài)信息,以得到所述待管理進程中每個子進程的運行狀態(tài)。
優(yōu)選地,所述監(jiān)測所述待管理進程中每個子進程的運行狀態(tài)包括:在所述存儲的狀態(tài)信息中查找所述待管理進程中的任一個子進程的進程名稱;當查找到時,根據(jù)查找到的對應的狀態(tài)信息確定該子進程的運行狀態(tài)。
優(yōu)選地,所述遍歷所述存儲的狀態(tài)信息,以得到所述待管理進程中每個子進程的運行狀態(tài)包括:按照預設(shè)周期,定時遍歷所述存儲的狀態(tài)信息,以得到所述待管理進程中每個子進程的運行狀態(tài)。
優(yōu)選地,所述配置文件包括至少一條配置信息,所述配置信息包括待管理進程的進程名稱和安全啟動指令,所述根據(jù)所述配置文件和所述待管理進程的運行狀態(tài)對所述待管理進程進行狀態(tài)控制包括:當根據(jù)所述待管理進程的運行狀態(tài)確定所述待管理進程需要安全恢復時,在配置文件中查找包括有所述待管理進程的進程名稱的配置信息;根據(jù)查找到的配置信息中、與所述待管理進程的進程名稱對應的安全啟動指令啟動所述待管理進程。
優(yōu)選地,所述配置信息包括待管理進程的進程名稱、安全啟動指令和超時時長,所述根據(jù)所述配置文件和所述待管理進程的運行狀態(tài)對所述待管理進程進行狀態(tài)控制包括:當根據(jù)所述待管理進程的運行狀態(tài)確定所述待管理進程處于啟動中狀態(tài)時,記錄所述待管理進程的啟動時長;若所述啟動時長達到所述超時時長,則在配置文件中查找包括有所述待管理進程的進程名稱的配置信息;根據(jù)查找到的配置信息中、與所述待管理進程的進程名稱對應的安全啟動指令啟動所述待管理進程。
優(yōu)選地,所述方法還包括:在所述根據(jù)所述配置文件和所述待管理進程的運行狀態(tài)對所述待管理進程進行狀態(tài)控制之后,將所述待管理進程的運行狀態(tài)和/或狀態(tài)控制的操作信息記錄到日志。
根據(jù)本公開實施例的第二方面,提供一種用于進程管理的裝置,所述裝置包括:加載單元,用于加載待管理進程的配置文件;監(jiān)測單元,用于監(jiān)測所述待管理進程的運行狀態(tài);以及狀態(tài)控制單元,用于根據(jù)所述配置文件和所述待管理進程的運行狀態(tài)對所述待管理進程進行狀態(tài)控制。
優(yōu)選地,所述裝置還包括:日志記錄單元,用于在所述根據(jù)所述配置文件和所述待管理進程的運行狀態(tài)對所述待管理進程進行狀態(tài)控制之后,將所述待管理進程的運行狀態(tài)和/或狀態(tài)控制的操作信息記錄到日志。
本公開的實施例提供的技術(shù)方案可以包括以下有益效果:通過對軟件中進程狀態(tài)的監(jiān)控和狀態(tài)控制,可以針對進程的不同狀態(tài)給出不同的狀態(tài)控制方案,從而對進程進行合理的狀態(tài)控制,提高軟件可靠性和穩(wěn)定性。并且通過結(jié)合配置文件,能夠很方便的擴展選擇待管理進程。
應當理解的是,以上的一般描述和后文的細節(jié)描述僅是示例性和解釋性的,并不能限制本公開。
附圖說明
此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本發(fā)明的實施例,并與說明書一起用于解釋本發(fā)明的原理。
圖1是根據(jù)一示例性實施例示出的一種用于進程管理的方法的流程圖;
圖2是根據(jù)一示例性實施例的優(yōu)選實施例示出的一種用于進程管理的方法的流程圖;
圖3是根據(jù)另一示例性實施例示出的一種用于進程管理的方法的流程圖;
圖4是根據(jù)另一示例性實施例示出的一種用于進程管理的方法的流程圖;
圖5是根據(jù)一示例性實施例示出的包括多個子進程的待管理進程的示意圖;
圖6是根據(jù)一示例性實施例示出的一種用于進程管理的裝置的結(jié)構(gòu)框圖;以及
圖7是根據(jù)另一示例性實施例示出的一種用于進程管理的裝置的結(jié)構(gòu)框圖。
附圖標記說明:
141加載模塊142監(jiān)測模塊
143控制模塊144狀態(tài)機
145日志記錄模塊
具體實施方式
這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本發(fā)明相一致的所有實施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本發(fā)明的一些方面相一致的裝置和方法的例子。
圖1是根據(jù)一示例性實施例示出的一種用于進程管理的方法的流程圖,如圖1所示,根據(jù)本公開一示例性實施例,用于進程管理的方法可以包括以下步驟:
在步驟s11中,加載待管理進程的配置文件。
在步驟s12中,監(jiān)測待管理進程的運行狀態(tài)。
在步驟s13中,根據(jù)配置文件和待管理進程的運行狀態(tài)對待管理進程進行狀態(tài)控制。
其中,待管理進程可以是多個進程,并且為了保證本公開的通用性,多個待管理進程中的每個待管理進行的運行狀態(tài)可以進行統(tǒng)一定義,例如待管理進程的運行狀態(tài)可以統(tǒng)一定義包括:已啟動、已停止、啟動中以及錯誤。配置文件中可以包括至少一條配置信息,該配置信息按照一定格式寫入配置文件。其中,配置信息例如可以包括待管理進程(例如其名稱、id等)、待管理進程的安全啟動命令、超時時間等信息。該配置文件類型可以是任何合理的文件類型,且各配置信息的格式類型可以是任何合理的格式類型。優(yōu)選地,為了便于對配置信息的加載和管理,該配置信息的格式類型選用統(tǒng)一的格式類型。
通過上述方法可以針對進程的不同狀態(tài)給出不同的狀態(tài)控制方案,從而對進程進行合理的狀態(tài)控制,提高軟件可靠性和穩(wěn)定性。并且通過結(jié)合配置文件,能夠很方便的擴展選擇待管理進程。
根據(jù)本公開一實施例,待管理進程可以包括一個或者一個以上的子進程。在一些實施例中,當待管理進程包括一個子進程時,可以從進程狀態(tài)機(用于監(jiān)測各個進程的運行狀態(tài),在此不限制狀態(tài)機的類型,本領(lǐng)域技術(shù)人員能夠采用現(xiàn)有的狀態(tài)機實現(xiàn)本公開中進程狀態(tài)機的功能)接收該子進程的運行狀態(tài),該子進程的運行狀態(tài)即該待管理進程的運行狀態(tài)。
在另一些實施例中,在待管理進程包括有一個以上的子進程的實施例中,可以根據(jù)各個子進程的運行狀態(tài)來確定待管理進程的運行狀態(tài)。示例性地,可以從進程狀態(tài)機接收并存儲關(guān)于各個子進程的狀態(tài)信息,該狀態(tài)信息可以包括進程名稱和運行狀態(tài)的對應關(guān)系。可以通過遍歷存儲的狀態(tài)信息,以確定該待管理進程的運行狀態(tài)。舉例來說,待管理進程process3,其包含兩個子進程process4和process5,當process4和process5的運行狀態(tài)均為停止狀態(tài)時,則可以確定待管理進程process3的運行狀態(tài)為停止狀態(tài);當process4和process5的運行狀態(tài)均為已啟動狀態(tài)時,則可以確定待管理進程process3的運行狀態(tài)為已啟動狀態(tài);當process4和process5中任一個處于正在啟動狀態(tài)(啟動中),另一個處于已啟動時,則可以確定待管理進程的運行狀態(tài)為啟動中。當process4和process5中任一個處于已停止狀態(tài),另一個處于啟動中或者已啟動狀態(tài)時,則可以確定待管理進程的運行狀態(tài)為錯誤狀態(tài)。
更為優(yōu)選地,根據(jù)存儲的狀態(tài)信息確定各個子進程的運行狀態(tài),進而確定待管理進程的運行狀態(tài)可以實現(xiàn)為:在所述存儲的狀態(tài)信息中查找所述待管理進程中的任一個子進程的進程名稱,當查找到時,根據(jù)查找到的對應的狀態(tài)信息確定該子進程的運行狀態(tài),進而根據(jù)確定的子進程的運行狀態(tài)確定待管理進程的運行狀態(tài)。進一步地,可以預先設(shè)定遍歷存儲的狀態(tài)信息的周期,并按照預設(shè)周期,定時遍歷存儲的狀態(tài)信息,以確定待管理進程中各個子進程的運行狀態(tài),進而確定所述待管理進程的運行狀態(tài)。
應用上述實施例,根據(jù)多個子進程的運行狀態(tài)來確定待管理進程的運行狀態(tài),進而管理待管理進程的運行狀態(tài),可以實現(xiàn)對多個子進程的統(tǒng)一管理,且上述實施例中考慮到各個進程的運行狀態(tài)不同,采用狀態(tài)機維護,使對待管理進程的控制更加安全有效。
圖2是根據(jù)一示例性實施例的優(yōu)選實施例示出的一種用于進程管理的方法的流程圖。如圖2所示,在本公開的優(yōu)選實施例中,首先加載并解析配置文件,并按照統(tǒng)一格式緩存配置文件中的配置信息。通過維護進程狀態(tài)機來輸出待管理進程的運行狀態(tài),并將待管理進程的運行狀態(tài)緩存。然后定時遍歷待管理進程,并通過待管理進程名稱獲取緩存的待管理進程的運行狀態(tài)。當待管理進程的狀態(tài)為已啟動時,則繼續(xù)下一待管理進程的狀態(tài)控制;當待管理進程的運行狀態(tài)為已停止或錯誤時,則安全恢復該待管理進程,以避免功能缺失;當待管理進程的運行狀態(tài)為啟動中時,則判斷是否超時,并在判斷為超時的情況下安全恢復待管理進程,該安全恢復待管理進程可以例如是重新啟動該待管理進程。最后將待管理進程的運行狀態(tài)和狀態(tài)控制的操作信息記錄到日志,以便后續(xù)對問題的跟蹤定位。在一些實施例中,可以僅將待管理進程的運行狀態(tài)和狀態(tài)控制的操作記錄中的一者記錄到日志,以便后續(xù)對問題的跟蹤定位。
圖3是根據(jù)另一示例性實施例示出的一種用于進程管理的方法的流程圖。如圖3所示,配置信息可以包括待管理進程的進程名稱和安全啟動指令。并且在待管理進程的狀態(tài)為已停止或錯誤時,通過以下步驟安全恢復待管理進程:
在步驟s31中,加載待管理進程的配置文件,并解析配置文件以及緩存配置文件中的配置信息。
在步驟s32中,監(jiān)測待管理進程的運行狀態(tài),并在監(jiān)測待管理進程的運行狀態(tài)為已停止或錯誤時,確定待管理進程需要安全恢復。
在步驟s33中,根據(jù)需要安全恢復的待管理進程,在配置文件中查找包括有該待管理進程的進程名稱的配置信息。
在步驟s34中,根據(jù)查找到的配置信息中、與所述待管理進程的進程名稱對應的安全啟動指令啟動需要安全恢復的待管理進程。
應用上述實施例,在配置信息中配置進程名稱和安全啟動指令,并結(jié)合監(jiān)測到的待管理進程的運行狀態(tài),能夠在待管理進程處于停止狀態(tài)或者錯誤狀態(tài)時,調(diào)用配置信息中的安全啟動指令及時啟動待管理進程。
圖4是根據(jù)另一示例性實施例示出的一種用于進程管理的方法的流程圖。如圖4所示,更為優(yōu)選地,配置信息還可以包括超時時長,并且在待管理進程的運行狀態(tài)為啟動中時,通過以下步驟判斷是否超時并在超時的情況下安全恢復待管理進程:
在步驟s41中,加載待管理進程的配置文件,并解析配置文件以及緩存配置文件中的配置信息。
在步驟s42中,監(jiān)測待管理進程的運行狀態(tài),當根據(jù)待管理進程的運行狀態(tài)確定待管理進程處于啟動中狀態(tài)時,記錄所述待管理進程的啟動時長。
在步驟s43中,若啟動時長達到超時時長,則在配置文件中查找包括有待管理進程的進程名稱的配置信息。
在步驟s44中,根據(jù)查找到的配置信息中、與待管理進程的進程名稱對應的安全啟動指令啟動待管理進程。
通過預先設(shè)定超時時長,并將處于啟動中狀態(tài)的待管理進程的啟動時長與之進行比較,可以減少當啟動時間較長的特殊進程啟動時或者具有相互依賴關(guān)系的進程集(待管理進程包括一個以上子進程)啟動時對其運行狀態(tài)的誤判,進而降低對待管理進程進行錯誤狀態(tài)控制的可能性。
圖5是根據(jù)一示例性實施例示出的包括多個子進程的待管理進程的示意圖,如圖5所示,在本公開的優(yōu)選實施例中,可以將相關(guān)聯(lián)的待管理的多個子進程封裝為一個待管理的總進程。在圖3中,包括待管理進程1、待管理進程2和待管理進程3三個待管理進程,其中待管理進程3是由子進程4和子進程5兩個相關(guān)聯(lián)的子進程封裝而成的一個待管理進程。針對該總進程,可以監(jiān)測其每個子進程的運行狀態(tài),并根據(jù)待管理進程的所有子進程的運行狀態(tài)確定所述待管理進程的運行狀態(tài)。
舉例來說,對于包括多個子進程的待管理進程,其運行狀態(tài)根據(jù)多個子進程的運行狀態(tài)來確定。例如,當總進程包括兩個子進程時,當兩個子進程的運行狀態(tài)均為已停止時,總進程的運行狀態(tài)為已停止;當兩個子進程的運行狀態(tài)均為已啟動時,總進程的運行狀態(tài)為已啟動;當兩個子進程的運行狀態(tài)均為啟動中時,總進程的運行狀態(tài)為啟動中;當其中一個子進程的運行狀態(tài)為啟動中時,另一個子進程的運行狀態(tài)為已啟動時,總進程的運行狀態(tài)為啟動中;當其中一個子進程的運行狀態(tài)為已停止,另一個子進程的運行狀態(tài)為啟動中或已啟動時,該總進程的運行狀態(tài)為錯誤。
根據(jù)配置文件和總進程的運行狀態(tài)對總進程進行狀態(tài)控制,即根據(jù)確定的總進程的狀態(tài),對其全部子進程進行相同的狀態(tài)控制。例如,當總進程為已停止或錯誤而需要進行安全恢復例如重新啟動時,則對該總進程內(nèi)的全部子進程進行重新啟動。
通過將多個待管理的相關(guān)聯(lián)的子進程封裝為一個待管理的總進程,可以將總進程中的每個子進程作為一個整體進程管理,進而保證了不同子進程之間在業(yè)務上的依賴關(guān)系。
優(yōu)選地,可以從待管理進程的狀態(tài)機接收并存儲關(guān)于各個子進程的狀態(tài)信息,該狀態(tài)信息可以包括子進程的進程名稱和運行狀態(tài)的對應關(guān)系。通過遍歷存儲的狀態(tài)信息,以得到所述待管理進程中每個子進程的運行狀態(tài)。更為優(yōu)選地,可以在所述存儲的狀態(tài)信息中查找所述待管理進程中的任一個子進程的進程名稱。當查找到時,根據(jù)查找到的對應的狀態(tài)信息確定該子進程的運行狀態(tài)。其中,可以預先設(shè)定遍歷存儲的狀態(tài)信息的周期,并按照預設(shè)周期,定時遍歷存儲的狀態(tài)信息,以得到所述待管理進程中每個子進程的運行狀態(tài)。
圖6是根據(jù)一示例性實施例示出的一種用于進程管理的裝置的結(jié)構(gòu)框圖。參照圖6,該裝置包括加載模塊151,監(jiān)測模塊152和控制模塊153。
該加載模塊141被配置為用于加載待管理進程的配置文件。
該監(jiān)測模塊142被配置為用于監(jiān)測待管理進程的運行狀態(tài)。
該控制模塊143被配置為用于根據(jù)配置文件和待管理進程的運行狀態(tài)對待管理進程進行狀態(tài)控制。
通過上述裝置可以對進程的不同狀態(tài)進行不同的狀態(tài)控制,從而提高了軟件可靠性和穩(wěn)定性。并且通過結(jié)合配置文件,能夠很方便的擴展選擇待管理進程。
其中,待管理進程可以是多個進程,并且為了保證本公開的通用性,多個待管理進程中的每個待管理進行的運行狀態(tài)可以進行統(tǒng)一定義,例如待管理進程的運行狀態(tài)可以統(tǒng)一定義為包括:已啟動、已停止、啟動中以及錯誤。并且配置文件中可以包括至少一條配置信息,該配置信息按照一定格式寫入配置文件。該配置文件類型可以是任何合理的文件類型,且各配置信息的格式類型可以是任何合理的格式類型。優(yōu)選地,為了便于對配置信息的加載和管理,該配置信息的格式類型選用統(tǒng)一的格式類型。
在本公開一實施例的優(yōu)選實施例中,加載模塊141在加載待管理進程的配置文件后,對配置文件進行解析并按照統(tǒng)一格式緩存配置文件中的配置信息,以便于對配置信息的調(diào)用。該配置信息可以包括待管理進程的進程名稱、安全啟動指令和超時時長。監(jiān)測模塊142遍歷所述進程,并根據(jù)待管理進程名稱從對應的狀態(tài)機獲取待管理進程的運行狀態(tài),并將所述運行狀態(tài)發(fā)送給控制模塊143??刂颇K143可以根據(jù)當前的安全性要求對不同待管理進程的運行狀態(tài)定制不同的處理方案,并將該處理方案以安全啟動指令的形式存儲在配置文件的配置信息中。當控制模塊143接收到待管理進程的運行狀態(tài)時,可以被根據(jù)配置文件和待管理進程的運行狀態(tài)對待管理進程進行狀態(tài)控制。
優(yōu)選地,當控制模塊143接收到的待管理進程的狀態(tài)為已啟動時,控制模塊143繼續(xù)下一待管理進程的狀態(tài)控制;當接收到的待管理進程的運行狀態(tài)為已停止或錯誤時,控制模塊143安全恢復該待管理進程,以避免功能缺失,該安全恢復待管理進程可以例如通過重新安全啟動該待管理進程;當接收到的待管理進程的運行狀態(tài)為啟動中時,控制模塊143進行判斷是否超時,并在判斷超時的情況下安全恢復待管理進程。
作為本公開一優(yōu)選實施例,為了將彼此具有依賴關(guān)系的相關(guān)聯(lián)的多個待管理進程進行統(tǒng)一管理,可以將多個待管理進程封裝為一個待管理的總進程??刂颇K143根據(jù)總進程的運行狀態(tài)和配置文件對該總進程進行狀態(tài)控制。
圖7是根據(jù)另一示例性實施例示出的一種用于進程管理的裝置的結(jié)構(gòu)框圖。如圖7所示,作為本公開進一步的公開和優(yōu)化,所述裝置還包括狀態(tài)機144,該狀態(tài)機144被配置為用于檢測并輸出對應進程的狀態(tài)。本公開中也不限定特定方式或者特定編程語言來維護待管理進程的狀態(tài)機,只要狀態(tài)機能夠正常輸出某進程的運行狀態(tài)即可,用于維護狀態(tài)機的編程語言可以例如是shell,python,c等。
優(yōu)選地,所述裝置還包括日志記錄模塊145,該日志記錄模塊被配置為用于將待管理進程的運行狀態(tài)和狀態(tài)控制的操作信息記錄到日志。可選地,該日志記錄模塊還可以被配置為僅將待管理進程的運行狀態(tài)和狀態(tài)控制的操作信息中的一者記錄到日志。
關(guān)于上述實施例中的裝置,其中各個模塊執(zhí)行操作的部分具體方式已經(jīng)在有關(guān)該方法的實施例中進行了詳細描述,此處將不做詳細闡述說明。
通過本發(fā)明所公開的方法和裝置,可以針對進程的不同狀態(tài)給出不同的狀態(tài)控制方案,從而對進程進行合理的狀態(tài)控制。將具有依賴關(guān)系的多個進程統(tǒng)一管理,保證了不同子進程在業(yè)務上的依賴關(guān)系。并且通過結(jié)合配置文件,更方便待管理進程的擴展。同時考慮到各個進程的運行狀態(tài)不同,采用狀態(tài)機維護,便于對各待管理進程狀態(tài)的獲取和監(jiān)測。而且引入了超時機制,使對被管理進程的控制更加準確有效。
本領(lǐng)域技術(shù)人員在考慮說明書及實踐這里公開的發(fā)明后,將容易想到本發(fā)明的其它實施方案。本申請旨在涵蓋本發(fā)明的任何變型、用途或者適應性變化,這些變型、用途或者適應性變化遵循本發(fā)明的一般性原理并包括本公開未公開的本技術(shù)領(lǐng)域中的公知常識或慣用技術(shù)手段。說明書和實施例僅被視為示例性的,本發(fā)明的真正范圍和精神由下面的權(quán)利要求指出。
應當理解的是,本發(fā)明并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進行各種修改和改變。本發(fā)明的范圍僅由所附的權(quán)利要求來限制。