2013-03-12 43 views
0

我們有一些計劃的作業每天在不同時間運行。這些工作包括記錄他們的結果是這樣的:計劃的作業和時間變化

<cflog file="#logname#" text="START #logname#"> 
<cfoutput>#mid(now(),6,19)# Scheduled Jobs running on Production (#server.Name#) 

過去的這個週末,當鐘錶分別前進一個小時,這些工作都晚了跑一個小時。以下是來自每天00:05運行的作業的上述兩行示例輸出。首先,就在時間變化之前。

"Information","jrpp-213","03/10/13","00:05:00",,"START scheduledjobs_0005" 
"Information","jrpp-213","03/10/13","00:05:00",,"start sheduledjobs_0005" 

接下來,時間改變後的第一次。它在一小時後運行。

​​

然後第二天恢復正常。

"Information","jrpp-111","03/12/13","00:05:00",,"START scheduledjobs_0005" 
"Information","jrpp-111","03/12/13","00:05:00",,"start sheduledjobs_0005" 

文件通過這些作業時產生的作業調度運行比也時間戳,一小時後。

有沒有人見過類似的東西?有誰知道什麼會導致這個或如何防止它?我們正在運行版本9,0,1,274733。

+0

您使用的是什麼操作系統? – 2013-03-12 12:31:45

+0

操作系統Windows 2003 操作系統版本5.2 – 2013-03-12 12:48:03

+0

在實際發生時間變化之前修改時間是我能想到的唯一解釋。除非文件中的數據不正確,否則我不會太在意時間戳。文件中的數據是否反映了與作業在00:05運行時相同的數據?在太難過之前驗證你的數據是不好的。 – 2013-03-12 13:55:45

回答

2

我以前見過這個。調度程序通過將24小時添加到預定的開始時間來計算每日任務的下一次運行。在這種情況下,星期天將24小時增加到00:00 ST將下一個開始時間設置爲星期一01:05 DST。調度程序會在第二天自行更正,因爲它會在預定的開始時間(現在是00:00 DST)上增加24小時。

以這種方式處理它很重要,因爲如果有人安排了在失蹤小時內運行的任務,那麼該任務在當天將不會運行。此外,如果任務計劃在秋季的額外小時內運行,它實際上會運行兩次。

+0

有道理。有關如何強制它堅持一天的實際時間的任何建議? – 2013-03-12 21:34:51

+0

我不確定是否有一種即開即用的方式來強制使用調度程序。但是你可以讓你的進程在每次運行後更新計劃任務本身。因此,不是將其設置爲每天運行,而是將其運行一次,最後計算下一次運行並使用CFSCHEDULE將其添加到調度程序。 類似於'如果當前小時不等於當前小時+ 24小時,則調整1;否則,現在的時間表+ 24小時。' 一種笨重的黑客。該任務的時間安排是否被認爲是關鍵任務? – imthepitts 2013-03-12 21:58:04

+0

計劃的任務是其他作業的容器。有6個集裝箱工作,包含超過100個個人工作。兩個單獨的作業產生由unix cronjob拾取的文件。當unix作業運行時,文件不在那裏,所以我們不得不做額外的工作來恢復。 – 2013-03-12 22:48:55