對(duì)象實(shí)時(shí)監(jiān)控方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及一種對(duì)象實(shí)時(shí)監(jiān)控方法。
【背景技術(shù)】
[0002]操作系統(tǒng)中的一些文件或目錄,如果受到更改,可能導(dǎo)致操作系統(tǒng)無(wú)法正常工作。例如,Linux系統(tǒng)中的/etc/resolv.conf文件,該文件是DNS域名解析的配置文件,其中包含了主機(jī)的域名搜索順序和DNS服務(wù)器的地址等配置參數(shù)。各個(gè)機(jī)房對(duì)應(yīng)有不同的配置。如果由于用戶(hù)的誤操作或其他程序的篡改配置參數(shù)而導(dǎo)致了其中的配置參數(shù)發(fā)生變化,則機(jī)房中的計(jì)算機(jī)可能會(huì)由于錯(cuò)誤的配置文件而無(wú)法解析域名,返回錯(cuò)誤。
[0003]現(xiàn)有技術(shù)中解決此問(wèn)題的一種方法是人工維護(hù),當(dāng)發(fā)現(xiàn)有計(jì)算機(jī)出現(xiàn)問(wèn)題,如無(wú)法正常訪(fǎng)問(wèn)DNS服務(wù)器時(shí),由管理員人工登錄服務(wù)器,手動(dòng)地將該文件中的配置參數(shù)修復(fù)至正常參數(shù)。顯然,這種方式繁瑣費(fèi)時(shí),無(wú)法批量修復(fù)并且具有滯后性。另一種處理方法是,在服務(wù)器上配置crontab文件,定時(shí)執(zhí)行配置文件的檢查和修復(fù),例如,每隔5分鐘掃描一次配置文件,如果發(fā)現(xiàn)被更改,就恢復(fù)成正確的配置。該方式需要預(yù)先設(shè)定一個(gè)掃描間隔,在間隔之內(nèi)還是存在配置文件被修改的可能。
[0004]因此,需要一種方法,實(shí)時(shí)地監(jiān)控系統(tǒng)中關(guān)鍵文件或目錄的變化,并實(shí)時(shí)地將其恢復(fù)為正確配置。
【發(fā)明內(nèi)容】
[0005]鑒于上述問(wèn)題,提出了本發(fā)明以便提供一種克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的對(duì)象實(shí)時(shí)監(jiān)控的方法和裝置。
[0006]根據(jù)本發(fā)明的一個(gè)方面,提供了一種對(duì)象實(shí)時(shí)監(jiān)控方法,包括:通過(guò)監(jiān)控進(jìn)程監(jiān)控對(duì)象的變化,對(duì)象包括文件和/或目錄;在監(jiān)控進(jìn)程監(jiān)控到對(duì)象變化時(shí),判斷該對(duì)象是否為目標(biāo)對(duì)象;如果該對(duì)象是目標(biāo)對(duì)象,則判斷該對(duì)象的變化方式是否屬于預(yù)定義的變化方式;如果其變化方式屬于預(yù)定義的變化方式,利用預(yù)先備份的對(duì)象恢復(fù)發(fā)生變化的對(duì)象。
[0007]根據(jù)本發(fā)明的另一方面,提供了一種對(duì)象實(shí)時(shí)監(jiān)控裝置,包括:監(jiān)控模塊,用于通過(guò)監(jiān)控進(jìn)程監(jiān)控對(duì)象的變化,對(duì)象包括文件和/或目錄;第一判斷模塊,用于在監(jiān)控模塊監(jiān)控到對(duì)象的變化時(shí),判斷該對(duì)象是否為目標(biāo)對(duì)象;第二判斷模塊,用于在第一判斷模塊判斷變化的對(duì)象是目標(biāo)對(duì)象時(shí),判斷該對(duì)象的變化方式是否屬于預(yù)定義的變化方式;恢復(fù)模塊,用于在第二判斷模塊判斷出對(duì)象的變化方式屬于預(yù)定義的變化方式時(shí),利用預(yù)先備份的對(duì)象恢復(fù)發(fā)生變化的對(duì)象。
[0008]根據(jù)本發(fā)明的對(duì)象監(jiān)控方法和裝置,當(dāng)監(jiān)控到對(duì)象發(fā)生變化時(shí),如果該對(duì)象屬于待監(jiān)控的對(duì)象,并且該對(duì)象的變化方式也屬于為其預(yù)定義的變化方式,則利用預(yù)先備份的正常對(duì)象恢復(fù)變化后的對(duì)象。根據(jù)該方案,能夠?qū)崟r(shí)得知系統(tǒng)中文件、目錄等對(duì)象的變化,并對(duì)其進(jìn)行及時(shí)的修復(fù),從而保證了相關(guān)程序、設(shè)備連續(xù)的正常工作;并且需監(jiān)控的文件、目錄可由用戶(hù)、管理員自定義,更加靈活和高效。
[0009]上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說(shuō)明書(shū)的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。
【附圖說(shuō)明】
[0010]通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
[0011]圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的對(duì)象監(jiān)控方法的流程圖;
[0012]圖2示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的對(duì)象監(jiān)控方法的流程圖;
[0013]圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的對(duì)象監(jiān)控裝置的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0014]下面將參照附圖更詳細(xì)地描述本公開(kāi)的示例性實(shí)施例。雖然附圖中顯示了本公開(kāi)的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開(kāi),并且能夠?qū)⒈竟_(kāi)的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0015]圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的對(duì)象監(jiān)控方法的流程圖,如圖1所示,該方法包括如下步驟:
[0016]步驟SI 10,通過(guò)監(jiān)控進(jìn)程監(jiān)控對(duì)象的變化。
[0017]監(jiān)控對(duì)象包括文件和/或目錄。對(duì)文件變化的監(jiān)控主要包括對(duì)文件內(nèi)容編輯的監(jiān)控;對(duì)目錄變化的監(jiān)控包括對(duì)目錄復(fù)制、目錄移動(dòng)、刪除等動(dòng)作的監(jiān)控以及目錄屬性的變化,還包括目錄下的文件或子目錄的新建、刪除、復(fù)制、文件名修改、屬性變化等的監(jiān)控。
[0018]步驟S120,在監(jiān)控進(jìn)程監(jiān)控到所述對(duì)象變化時(shí),判斷該對(duì)象是否為目標(biāo)對(duì)象。
[0019]目標(biāo)對(duì)象是由用戶(hù)或管理員自定義的待監(jiān)控對(duì)象,通常即是用戶(hù)需要關(guān)注的目標(biāo)文件和/或目標(biāo)目錄。目標(biāo)目錄可以包括系統(tǒng)中包含關(guān)鍵配置文件的目錄,例如:系統(tǒng)配置目錄/etc,用戶(hù)家目錄/home,應(yīng)用程序目錄等;相應(yīng)地,目標(biāo)文件可以是存在于上述目錄下的配置文件。例如,如果用戶(hù)想要保證計(jì)算機(jī)能夠正常訪(fǎng)問(wèn)指定的域名,則目標(biāo)文件就是DNS域名解析的配置文件,在Iinux系統(tǒng)中,即是/etc/resolv.conf文件,若監(jiān)控到的變化對(duì)象不屬于目標(biāo)對(duì)象,方法結(jié)束。步驟S110,S120所述的監(jiān)控進(jìn)程是本領(lǐng)域人員將本發(fā)明方法具體實(shí)現(xiàn)為應(yīng)用程序時(shí),用于監(jiān)控的基本執(zhí)行單元,可以是獨(dú)立開(kāi)發(fā)的,或是利用已有的工具實(shí)現(xiàn),例如Inotify-tools等。
[0020]步驟S130,如果該對(duì)象是目標(biāo)對(duì)象,判斷對(duì)象的變化方式是否屬于預(yù)定義的變化方式。
[0021]用戶(hù)或管理員在定義目標(biāo)對(duì)象時(shí),也為每個(gè)對(duì)象定義了特定的變化方式。待監(jiān)控的目標(biāo)對(duì)象的變化方式包括以下方式的一項(xiàng)或多項(xiàng):文件和/或目錄的新增、編輯、移動(dòng)、刪除事件,以及文件和/或目錄的屬性變化。若目標(biāo)對(duì)象的變化方式不屬于預(yù)定義的變化方式,方法結(jié)束。
[0022]步驟S140,如果對(duì)象的變化方式屬于預(yù)定義的變化方式,利用預(yù)先備份的對(duì)象恢復(fù)發(fā)生變化的對(duì)象。
[0023]在本實(shí)施例中的方法執(zhí)行之前,將用戶(hù)定義的目標(biāo)對(duì)象備份,創(chuàng)建文件或目錄對(duì)象的副本,當(dāng)監(jiān)控到該目標(biāo)對(duì)象發(fā)生預(yù)定方式的變化時(shí),利用預(yù)先創(chuàng)建的對(duì)象副本替換變化后的對(duì)象副本。
[0024]根據(jù)本發(fā)明上述實(shí)施例提供的方法,當(dāng)監(jiān)控到系統(tǒng)中的對(duì)象發(fā)生變化時(shí),如果還判斷出該對(duì)象屬于用戶(hù)關(guān)注的目標(biāo)對(duì)象,并且該對(duì)象的變化方式也屬于為其預(yù)定義的變化方式,則利用預(yù)先備份的正常對(duì)象恢復(fù)變化后的對(duì)象。根據(jù)該方案,能夠?qū)崟r(shí)得知系統(tǒng)中文件、目錄等對(duì)象的變化,并對(duì)其進(jìn)行及時(shí)的修復(fù),從而保證了相關(guān)程序、活動(dòng)連續(xù)的正常工作;并且需監(jiān)控的文件、目錄可由用戶(hù)、管理員自定義,更加靈活和高效。
[0025]圖2示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的對(duì)象監(jiān)控方法的流程圖,如圖2所示,該方法包括如下步驟:
[0026]步驟S210,通過(guò)監(jiān)控進(jìn)程監(jiān)控對(duì)象的變化。
[0027]該步驟可通過(guò)系統(tǒng)提供的接口函數(shù)實(shí)現(xiàn)。例如,Windows等常見(jiàn)的計(jì)算機(jī)操作系統(tǒng)為開(kāi)發(fā)人員提供有多種應(yīng)用程序開(kāi)發(fā)接口(API),各種應(yīng)用程序都是通過(guò)調(diào)用相應(yīng)的API來(lái)實(shí)現(xiàn)的,則在Windows系統(tǒng)中,該步驟可通過(guò)監(jiān)控操作系統(tǒng)提供的API來(lái)實(shí)現(xiàn),例如,Windows系統(tǒng)通過(guò)WriteFile函數(shù)向指定路徑的文件寫(xiě)數(shù)據(jù),監(jiān)控該函數(shù)即可實(shí)現(xiàn)對(duì)文件內(nèi)容編輯事件的監(jiān)控,當(dāng)監(jiān)控到該函數(shù)被調(diào)用時(shí),可以從其參數(shù)中獲取該函數(shù)的作用對(duì)象。對(duì)文件刪除,創(chuàng)建等變化的監(jiān)控也以類(lèi)似方式實(shí)現(xiàn),此處不再贅述。
[0028]在Linux系統(tǒng)中,可通過(guò)Inotify-tools來(lái)監(jiān)控系統(tǒng)中的對(duì)象的變化。Inotify-tools是為L(zhǎng)inux下Inotify文件監(jiān)控工具提供的一套c的開(kāi)發(fā)接口庫(kù)函數(shù),同時(shí)還提供了一系列的命令行工具,這些工具可以用來(lái)監(jiān)控文件系統(tǒng)的事件。Inotify是一種文件變化通知機(jī)制,允許監(jiān)控進(jìn)程打開(kāi)一個(gè)獨(dú)立文件描述符,并針對(duì)事件集監(jiān)控一個(gè)或者多個(gè)文件/目錄,例如打開(kāi)、關(guān)閉、移動(dòng)/重命名、刪除、創(chuàng)建或者屬性改變。通過(guò)Inotify-tools可以實(shí)現(xiàn)高效率的實(shí)時(shí)監(jiān)控。
[0029]步驟S220,判斷發(fā)生變化的對(duì)象是否為監(jiān)控列表中的目標(biāo)對(duì)象,如果在監(jiān)控列表中,執(zhí)行步驟S230,否則,方法結(jié)束。
[0030]監(jiān)控列表是通過(guò)讀取用戶(hù)設(shè)置文件生成的。本方法允許用戶(hù)根據(jù)監(jiān)控的目的和需求將待監(jiān)控的目標(biāo)對(duì)象的目標(biāo)路徑,文件/目錄名等信息寫(xiě)入設(shè)置文件中,監(jiān)控進(jìn)程讀取該用戶(hù)設(shè)置文件的內(nèi)容,生成目標(biāo)對(duì)象的監(jiān)控列表。
[0031]可選地,步驟S210和步驟S220中對(duì)目標(biāo)對(duì)象的監(jiān)控也可以實(shí)現(xiàn)為:監(jiān)控進(jìn)程首先讀取用戶(hù)設(shè)置文件,根據(jù)用戶(hù)寫(xiě)入的信息生成包含目標(biāo)對(duì)象的監(jiān)控列表,然后,只對(duì)該監(jiān)控列表中的目標(biāo)對(duì)象進(jìn)行監(jiān)控。
[0032]步驟S230,判斷對(duì)象的變化方式是否屬于預(yù)定義的待監(jiān)控的目標(biāo)對(duì)象的變化方式,如果屬于,執(zhí)行步驟S240,否則,方法結(jié)束。
[0033]用戶(hù)或管理員在定義目標(biāo)對(duì)象時(shí),也為每個(gè)對(duì)象定義了特定的變化方式。待監(jiān)控的目標(biāo)對(duì)象的變化方式包括以下方式的一項(xiàng)或多項(xiàng):文件和/或目錄的新增、編輯、移動(dòng)、刪除事件,以及文件和/或目錄的屬性變化。
[0034]監(jiān)控到的文件和/或目錄事件可能不會(huì)對(duì)系統(tǒng)產(chǎn)生影響,以文件監(jiān)控為例,監(jiān)控進(jìn)程通過(guò)監(jiān)控API函數(shù)或Inotify-tools中的相關(guān)函數(shù)監(jiān)控到了配置文件打開(kāi)、讀取或復(fù)制事件的發(fā)生,然而如果該事件并未更改文件內(nèi)容或文件內(nèi)容的關(guān)鍵部分,則認(rèn)為不屬于預(yù)定義的變化方式,不必進(jìn)行后續(xù)的步驟;或者,對(duì)于目錄監(jiān)控,在系統(tǒng)中安裝了新的用戶(hù)程序時(shí),目錄/etc下可能會(huì)新增有用戶(hù)程序的配置文件,通常這并不會(huì)影響系統(tǒng)的運(yùn)行,因此,