Cron-Expresstion in Linux
cron來自希臘語的chronos(時間)一詞。在linux中,通過運行crontab -e就可以設置在特定的時刻自動運行你指定的程序。每個用戶的自動運行程序,都放在/var/spool/cron/目錄下,以自己用戶名命名的文件中。在這些文件中,每一行都設置一個自動指行的命令,以及其運行的時間。每一行都由7個字段構成,相鄰的字段以空格相間,每個字段的含義如下
Field | Meaning |
---|---|
1 | Minute (0-59) |
2 | Hour (2-24) |
3 | Day of month (1-31) |
4 | Month (1-12, Jan, Feb, etc) |
5 | Day of week (0-6) 0 = Sunday, 1 = Monday etc or Sun, Mon, etc) |
6 | User that the command will run as |
7 | Command to execute |
補充說明:
- 用*/n表示某字段單位時間內運行n次
- 可以通過以“,”相隔的一列數字,在表示某字段運行的特定值
- 可以通過n-m來指定n到m 這個區間
- 可以用>>logfile 2>&1來將程序運行的輸出或錯誤都寫到logfile中
- /dev/null 2>&1可用丟棄程序運行時的輸出或錯誤
- 可將幾個命令以;相隔用()包括起來
參考文檔: Cron Help Guide
Cron-Expression in Quartz
表達式用" "分隔爲7個部分,每部分含義如下
Field Name | lowed Values | Allowed Special Characters |
---|---|---|
Seconds | 0-59 | , - * / |
Minutes | 0-59 | , - * / |
Hours | 0-23 | , - * / |
Day-of-month | 1-31 | , - * ? / L W C |
Month | 1-12 or JAN-DEC | , - * / |
Day-of-Week | 1-7 or SUN-SAT | , - * ? / L C # |
Year (Optional) | empty, 1970-2099 | , - * / |
補充說明:
- '*'代表 '任何值'
- '?'也代表 '任何值', 但只用於 Day-of-month 和 Day-of-Week, 當其中一個設置了條件時,另外一個就要用'?' 來表示 '任何值'
- '-'用來表示範圍, 比如 Day-of-month 5-10 代表 5號到10號
- ','用來添加附加的參數,比如 Hours 4,14 代表 上午4點和下午兩點
- '/'用來代表增量以用來循環,比如 Hours 2/6 代表 2點,8點,下午2點,下午8點
- 'L'用於 Day-of-month 和 Day-of-Week, 代表最後1天, 在Day-of-month中只用'L'就可以,在Day-of-week中用 'nL' 來代表是最後一個星期n
- 'W'用於 Day-of-month, 代表最近工作日,比如 '15W', 如果15號那天是週六則取14號週五,如果是週日則取16號週一,其他情況不變
- 'LW' 代表當月最後一個工作日
- '#'用於 Day-of-Week, 'n#m'用於代表當月第m個 "周n"(根據n在week中的定義確定)
- 'C'似乎目前還沒實現完全,暫不解釋(自己也還不是很清楚,先看文檔吧)