2012-02-15 84 views
-1

我想在我的項目中使用cron,在那裏我需要一些標誌以在特定時間段內啓用並再次禁用它。該標誌可以位於文件中或共享內存中。操作CRON表達式

我對cron來說相當陌生,但我的想法是我們可以安排在任何特定時間開始cmd。所以如果我想設置一個標誌,我可以編寫一個程序來讀取文件或附加到共享內存更新標誌並關閉這些標誌並退出。但問題出現在X分鐘後,應該再次禁用該標誌。

我認爲有兩個cron工作來完成這項工作會有所幫助。我們可以用不同的參數激活相同的cmd,我可以相應地調換標誌。這是一個好方法嗎?

如果是這樣的話;我被困在操縱給定的cron表達式。如果我只有在(週期性)開始時間和標誌需要激活的持續時間之間交換標誌的exp,有沒有辦法有效地將持續時間(以天/小時/分鐘爲單位)添加到現有的cron exp並創建一個新的exp?或者是否需要編寫完整的邏輯來添加和調整字段以實現它?

我有用Java和C++編寫的組件,它可以訪問這個cron exp。所以用這兩種語言來做這件事對我來說都很好。現在我正在嘗試使用C++。

+0

如果您在一段時間後禁用該命令 - 比方說10分鐘,這意味着您只想在接下來的10分鐘內啓動該程序一次?爲什麼然後使用cron作業?你爲什麼不直接調用這個命令(可能是在後臺的一個線程中),或者使用'at',你可以在那裏說'at now + 5 minutes'? – 2012-02-15 10:16:18

+0

該命令也可以安排在peridically。每週凌晨3點開始每個第一天,早上5點停止。類似的東西。 – vpram86 2012-02-15 10:20:15

+0

那麼它是一個服務器進程,你需要停止它?其他程序通常在完成時運行並結束。如果是這樣,你需要兩個條目,一個用於啓動,一個用於停止。 – 2012-02-15 10:25:28

回答

1

經典的crontab行

*/5 * * * * echo crontabfoo > /dev/null 

標記不活動的crontab行:

# */5 * * * * echo crontabfoo > /dev/null 

是的,只是一個普通的評論。如果它每5分鐘運行一次,並且在6分鐘後註釋掉它,它仍然有很短的兩次運行的機會,所以也許你希望在不久的將來指定具體的時間。

+0

我想在我的程序中實現定時標誌啓用/禁用。我正在嘗試使用CRON。假設我有一個持續運行的進程;我希望我的過程中的一面旗幟只在每週的每週的第一天的凌晨3點到5點期間成爲真實的。 – vpram86 2012-02-15 10:29:01

+0

我發現了一種使用另一個通知過程來指示該標誌的方法(這在我們的實現中似乎已經存在) – vpram86 2012-08-02 04:57:22