本發(fā)明屬于計算機系統(tǒng)領(lǐng)域,尤其涉及一種增加linux定時任務(wù)的系統(tǒng)和方法。
背景技術(shù):
:cron,計劃任務(wù),是任務(wù)在約定的時間執(zhí)行已經(jīng)計劃好的工作。例如,可以在配置文件中約定每天早上4點將http的服務(wù)器重新啟動,每天晚上10點鐘給某個郵箱發(fā)送一封郵件,都是計劃任務(wù)。在linux系統(tǒng)中,計劃任務(wù)易半友從容承擔(dān),cron可以根據(jù)配置文件約定的時間來執(zhí)行特定任務(wù)。將cron設(shè)置為開機自動開啟。cron啟動后,它會讀取它的所有配置文件,如全局配置文件/etc/crontab,以及每個用戶的計劃任務(wù)配置文件,然后cron會根據(jù)命令和執(zhí)行時間來按時調(diào)用工作任務(wù)。cron可以在無需人工干預(yù)的情況下作業(yè),但是缺點在于不提供任何形式的api,只能通過應(yīng)用的配置文件來配置cron任務(wù),局限于應(yīng)用內(nèi)部使用,缺少了靈活性。而且在目前l(fā)inux定時任務(wù)中,開發(fā)者需要為每一個定時任務(wù)編寫一個cron條目,這是開發(fā)者很感到煩惱的事情。而且開發(fā)者必須登錄到linux服務(wù)器來添加這些cron條目,增加過程十分繁瑣。為了解決上述技術(shù)問題,人們進行了長期的探索,中國專利公開了一種分布式定時任務(wù)控制裝置及方法[申請?zhí)枺?01310102698.3],包括接收模塊,用于接收定時任務(wù)的指令;數(shù)據(jù)庫模塊,用于保存cron記錄,其中,每個所述cron記錄具有對應(yīng)的當(dāng)前狀態(tài)信息;多個調(diào)度模塊,用于分別根據(jù)調(diào)度時間表對所述的數(shù)據(jù)庫模塊中的cron記錄進行調(diào)度,當(dāng)cron記錄滿足所述的調(diào)度時間表之后,根據(jù)所述cron記錄對應(yīng)的額當(dāng)前狀態(tài)信息將所述cron記錄放置到執(zhí)行隊列中;以及執(zhí)行模塊,用于執(zhí)行所述執(zhí)行隊列中的cron記錄。上述技術(shù)方案解決了現(xiàn)有技術(shù)的cron任務(wù)局限于應(yīng)用內(nèi)部使用,缺少了靈活等問題,但是其仍然存在需要為每一個定時任務(wù)編寫一個cron條目的繁瑣過程,增加定時任務(wù)的方法還有待進一步提高以簡化增加過程。技術(shù)實現(xiàn)要素:本發(fā)明的目的是針對上述問題,提供一種簡化過程的增加linux定時任務(wù)的系統(tǒng);本發(fā)明的另一目的是針對上述問題,提供一種基于增加linux定時任務(wù)的系統(tǒng)的方法;為達到上述目的,本發(fā)明采用了下列技術(shù)方案:本發(fā)明的增加linux定時任務(wù)的系統(tǒng),包括linux,所述的linux內(nèi)安裝有數(shù)據(jù)庫和中間鍵,所述的數(shù)據(jù)庫中記錄有每條命令的運行標(biāo)示,所述的中間鍵用于調(diào)用數(shù)據(jù)庫的每條記錄并判斷這條記錄是否在此時間點運行,所述的linux還包括有至少一個linux定時任務(wù),且所述的每個linux定時任務(wù)包括用于每隔一段預(yù)設(shè)時間循環(huán)訪問中間鍵的cron條目。通過上述技術(shù)方案,使增加定時任務(wù)的的編寫任務(wù)過程變得簡單易用在上述的增加linux定時任務(wù)的系統(tǒng)中,所述的運行標(biāo)示包括命令標(biāo)識、命令的運行時間標(biāo)識、命令的生效狀態(tài)標(biāo)識以及該命令的最后一次運行時間標(biāo)識。在上述的增加linux定時任務(wù)的系統(tǒng)中,所述的中間鍵由php語言編寫而成。在上述的增加linux定時任務(wù)的系統(tǒng)中,所述的每個linux定時任務(wù)包括用于確定什么時候執(zhí)行相應(yīng)的每條指令的條件模塊。一種基于所述的增加linux定時任務(wù)的系統(tǒng)的方法,其包括:linux定時任務(wù)每隔一段預(yù)設(shè)時間循環(huán)訪問中間鍵;中間鍵調(diào)用數(shù)據(jù)庫的每條記錄并判斷相應(yīng)的命令是否在此時間點運行;根據(jù)每個linux定時任務(wù)中的條件確定相應(yīng)每條指令的執(zhí)行時間。在上述的增加linux定時任務(wù)的方法中,linux定時任務(wù)通過增加每隔一段預(yù)設(shè)時間循環(huán)訪問中間鍵的cron條目以循環(huán)訪問中間鍵。在上述的增加linux定時任務(wù)的方法中,所述的預(yù)設(shè)時間為一分鐘。在上述的增加linux定時任務(wù)的方法中,所述的中間鍵在調(diào)用數(shù)據(jù)庫每條記錄的同時讀取生效的每條記錄以判斷相應(yīng)的命令是否在這此時間點運行。在上述的增加linux定時任務(wù)的方法中,所述的中間鍵通過讀取數(shù)據(jù)庫中生效的每條記錄然后循環(huán)根據(jù)每條生效命令的運行時間標(biāo)識來判斷相應(yīng)的生效命令是否在此時間點運行。在上述的增加linux定時任務(wù)的方法中,每條生效的記錄對應(yīng)的命令根據(jù)相應(yīng)的linux定時任務(wù)中的條件確定是否在此時間點運行。本發(fā)明增加linux定時任務(wù)的系統(tǒng)和方法相較于現(xiàn)有技術(shù)具有以下優(yōu)點:簡化增加任務(wù)時的編寫過程,減輕開發(fā)者的負擔(dān)。附圖說明圖1是本發(fā)明實施例一的增加linux定時任務(wù)的系統(tǒng)框圖;圖2是本發(fā)明實施例二增加linux定時任務(wù)的方法流程圖。圖中,linux定時任務(wù)1;cron條目11;linux2;數(shù)據(jù)庫21;中間鍵22。具體實施方式本發(fā)明可用于在linux增加定時任務(wù),解決了現(xiàn)有技術(shù)開發(fā)者需要為每一個定時任務(wù)編寫一個cron條目,而且開發(fā)者必須登錄到linux服務(wù)器來添加這些cron條目,操作過程繁瑣等問題。以下是本發(fā)明的優(yōu)選實施例并結(jié)合附圖,對本發(fā)明的技術(shù)方案作進一步的描述,但本發(fā)明并不限于這些實施例。實施例一如圖1所示,本發(fā)明的增加linux定時任務(wù)的系統(tǒng),包括linux,所述的linux內(nèi)安裝有數(shù)據(jù)庫21和中間鍵22,所述的數(shù)據(jù)庫21中記錄有每條命令的運行標(biāo)示。進一步地,所述的中間鍵22用于調(diào)用數(shù)據(jù)庫21的每條記錄,并通過數(shù)據(jù)庫中運行標(biāo)示的字段判斷這條記錄是否在此時間點運行,所述的linux1還包括有至少一個linux定時任務(wù)2,且所述的每個linux定時任務(wù)1包括用于每隔一段預(yù)設(shè)時間循環(huán)訪問中間鍵22的cron條目11,由于該cron條目11,linux定時任務(wù)每個一段預(yù)設(shè)時間都會訪問一次中間鍵22。其中,運行標(biāo)示包括命令標(biāo)識、命令的運行時間標(biāo)識、命令的生效狀態(tài)標(biāo)識以及該命令的最后一次運行時間標(biāo)識;具體表現(xiàn)為如下字段:idflagcommandactionlast_run_time1everyminute/var/www/index.php12016-12-2618:42flag字段表示什么時候運行這條命令,flag里面的值可以自己定義;如表格中的flag字段下為everyminute,表示每分鐘運行這條命令,當(dāng)然也可以是其他時間,如everyday,則表示每天運行這條命令;也可以是具體的時間,例如2016-1-112:00,則表示在這個時間點運行這條命令;command字段:表示運行哪一條命令;如表格中的command字段下為/var/www/index.php,則表示需要運行/var/www/index.php代表的命令;action字段:表示此條是否處于生效狀態(tài);如表格中的action字段下的1,表示此條記錄處于生效狀態(tài);此時,當(dāng)表示中action字段下為0時,則表示此條記錄處于未生效狀態(tài)。當(dāng)然,此字段不排除采用其他形式記錄。記錄形式可以為更詳細的狀態(tài)信息,包括活躍狀態(tài)、結(jié)束狀態(tài)、刪除狀態(tài)、暫停狀態(tài)和配額超限狀態(tài)中的一種或多種,例如,其中活躍狀態(tài)可表示為111,結(jié)束狀態(tài)可表示為011,刪除狀態(tài)可表示為100,暫停狀態(tài)可表示為010,配額超限狀態(tài)可表示為001。last_run_time字段:表示最后一次運行時間;如表格中的last_run_time字段下的2016-12-2618:42,則表示該條命令的上次運行時間為2016年12月26日的下午6點42分,若該條命令的運行周期為24小時,則該命令的下次運行時間為2016年12月27日下午6點42分。本實施例中,預(yù)設(shè)時間為一分鐘,當(dāng)然也可以是其他時間,每次linux定時任務(wù)1訪問中間鍵22的時候,中間鍵22便會向數(shù)據(jù)庫21讀取生效的每一條記錄。進一步地,記錄的生效與否通過下面字段的action字段得知,在讀取到中間鍵22生效的每一條記錄后循環(huán)根據(jù)下列字段的flag字段來判斷每一個相應(yīng)的額記錄是否在此次執(zhí)行。下面采用具體的例子來對本實施例進行更具體的說明:首先,使用者在linux里面增加一個linux定時任務(wù)1,當(dāng)然該linux定時任務(wù)1包含每隔一段預(yù)設(shè)時間循環(huán)訪問中間鍵22的cron條目11,此cron條目11不具有實質(zhì)的計劃任務(wù),任務(wù)指令被保存于linux定時任務(wù)1中,而命令被保存在數(shù)據(jù)庫的每一條記錄中,cron只負責(zé)使linux定時任務(wù)1循環(huán)訪問中間鍵22;然后中間鍵22在被linux定時任務(wù)1訪問的同時讀取數(shù)據(jù)庫21中生效的每一條記錄;然后根據(jù)linux定時任務(wù)1中的條件來確定相應(yīng)的linux定時任務(wù)1指令的執(zhí)行時間以確定是否在此次運行相應(yīng)的命令。進一步地,所述的每個linux定時任務(wù)1包括用于確定什么時候執(zhí)行相應(yīng)的每條指令的條件模塊。進一步地,條件模塊所包含的條件包括linux定時任務(wù)1所針對的linux中的具體單元模塊的啟動條件,任務(wù)執(zhí)行時間具體單元模塊的操作允許等條件,當(dāng)所有的外部條件和內(nèi)部條件均滿足該linux定時任務(wù)1的指令執(zhí)行要求,且數(shù)據(jù)庫21中的flag字段也表示命令在此次執(zhí)行,則執(zhí)行l(wèi)inux定時任務(wù)1指定的任務(wù)。優(yōu)選地,所述的中間鍵22由php語言編寫而成,當(dāng)然,不排除其他語言來完成中間鍵22的編寫,此處不進行限制,只要滿足編寫要求即可。本實施方式通過在linux2中安裝中間鍵22和數(shù)據(jù)庫21:數(shù)據(jù)庫21中插入每條命令的運行時間標(biāo)示;中間鍵22調(diào)用數(shù)據(jù)庫21的每條記錄并判斷這條記錄是否在這此時間點運行;同時通過在linux定時任務(wù)1中添加一條每分鐘循環(huán)訪問中間鍵22的cron條目11來循環(huán)訪問數(shù)據(jù)庫21中的命令是否在此次運行,讓編寫過程化繁為簡,減輕編寫者的負擔(dān)。實施例二如圖2所示,本實施例是一種基于所述的增加linux定時任務(wù)1的系統(tǒng)的增加linux定時任務(wù)1的方法,包括:開發(fā)者為每個linux定時任務(wù)增加一條用于每隔一段時間循環(huán)訪問中間鍵的cron條目;linux定時任務(wù)1每隔一段預(yù)設(shè)時間循環(huán)訪問中間鍵22;具體地,具體地,linux定時任務(wù)1通過開發(fā)者增加的每隔一段預(yù)設(shè)時間循環(huán)訪問中間鍵22的cron條目11以實現(xiàn)每隔一段預(yù)設(shè)時間循環(huán)訪問中間鍵22。進一步地,所述的預(yù)設(shè)時間為一分鐘。當(dāng)然此預(yù)設(shè)時間也可以為50秒、30秒,20秒、10秒或者更短;或者,此預(yù)設(shè)時間也可以為70秒、80秒、90秒,甚至更長時間。本實施例中,開發(fā)人員只需要在linux定時任務(wù)1中增加每分鐘循環(huán)訪問中間鍵22的cron條目11即可,不需要專門為每個linux定時任務(wù)編寫一個cron條目,簡化了linux定時任務(wù)的增加過程。具體地,中間鍵22調(diào)用數(shù)據(jù)庫21的每條記錄并判斷相應(yīng)的命令是否在此時間點運行,每條記錄包括存儲于數(shù)據(jù)庫中的運行標(biāo)示,系統(tǒng)通過運行標(biāo)示上的字段判斷這條記錄是否在此時間點運行;進一步地,系統(tǒng)根據(jù)每個linux定時任務(wù)1中的條件確定相應(yīng)每條指令的執(zhí)行時間。其中,linux定時任務(wù)1中的條件包括linux定時任務(wù)1所針對的linux2中的具體單元模塊的啟動條件,任務(wù)執(zhí)行時間和對具體單元模塊的操作允許等條件,當(dāng)所有的外部條件和內(nèi)部條件均滿足該linux定時任務(wù)1的指令執(zhí)行要求,且數(shù)據(jù)庫21中的flag字段也表示命令在此次執(zhí)行,則執(zhí)行l(wèi)inux定時任務(wù)1指定的任務(wù)。進一步地,所述的中間鍵22在調(diào)用數(shù)據(jù)庫21每條記錄的同時讀取生效的每條記錄以判斷相應(yīng)的命令是否在這此時間點運行。再進一步地,所述的中間鍵22通過讀取數(shù)據(jù)庫21中生效的每條記錄然后循環(huán)根據(jù)每條生效命令的運行時間標(biāo)識來判斷相應(yīng)的生效命令是否在此時間點運行。更進一步地,每條生效的記錄對應(yīng)的命令根據(jù)相應(yīng)的linux定時任務(wù)1中的條件確定是否在此時間點運行。本實施例的原理如下:通過在linux系統(tǒng)內(nèi)安裝一個中間鍵和一個數(shù)據(jù)庫,數(shù)據(jù)庫中插入每條命令的運行時間標(biāo)示;而中間鍵用來調(diào)用數(shù)據(jù)庫的每條記錄并判斷這條記錄是否在這此時間點運行,在增加linux定時任務(wù)的過程中,linux定時任務(wù)中只需要增加一條每分鐘循環(huán)訪問中間鍵的cron條目,然后在循環(huán)訪問的過程中再由中間鍵向數(shù)據(jù)庫中讀取要執(zhí)行的任務(wù);最后根據(jù)每個定時任務(wù)中的條件來確定什么時候來執(zhí)行相應(yīng)的每條指令。采用上述技術(shù)方案,使增加linux定時任務(wù)的編寫任務(wù)過程變得簡單易用,大大提高了linux定時任務(wù)的增加過程,提高編寫效率,具有廣泛的應(yīng)用前景。本文中所描述的具體實施例僅僅是對本發(fā)明精神作舉例說明。本發(fā)明所屬
技術(shù)領(lǐng)域:
的技術(shù)人員可以對所描述的具體實施例做各種各樣的修改或補充或采用類似的方式替代,但并不會偏離本發(fā)明的精神或者超越所附權(quán)利要求書所定義的范圍。盡管本文較多地使用了linux定時任務(wù)1;cron條目11;linux2;數(shù)據(jù)庫21;中間鍵22等術(shù)語,但并不排除使用其它術(shù)語的可能性。使用這些術(shù)語僅僅是為了更方便地描述和解釋本發(fā)明的本質(zhì);把它們解釋成任何一種附加的限制都是與本發(fā)明精神相違背的。當(dāng)前第1頁12