cron 運算式是一個簡潔的五欄位字串,用來定義排程工作何時執行:分鐘、小時、日期、月份,以及星期幾。標準格式為 * * * * *,其中每個星號都是萬用字元,可替換為特定數字、範圍、清單或步進值。手動撰寫這些運算式需要牢記確切的欄位順序與語法規則,而這些規則在不同的排程器之間略有差異,例如 Linux crontab、Kubernetes CronJobs 以及各種雲端平台。與其每次都要猜測或查閱欄位順序,不如使用瀏覽器型的 Cron 運算式產生器,從易讀的排程來建立運算式。
無論你是需要在每天凌晨 2 點執行備份腳本、在每週一中午清理記錄檔,或是在每月第一天觸發資料庫同步,產生器都能讓你選擇頻率並設定確切時間,而無需擔心欄位順序。你首先選擇排程類型——每小時、每天、每週、每月、每年或自訂——然後調整該排程類型所顯示的間隔、分鐘、小時、星期幾或月份日期。工具會即時更新五欄位運算式,你可以直接複製並貼到排程器中。這種做法能避免語法錯誤並節省時間,特別是在你需要為不同頻率建立多個工作時。
Cron 運算式被應用於許多環境中,從本機 Linux 伺服器到像 Kubernetes、AWS CloudWatch 及 Google Cloud Scheduler 等雲端平台。每個環境對欄位的解釋可能略有不同,特別是在像星期幾與日期衝突或時區處理這類邊界情況。例如,Kubernetes CronJobs 預設使用 UTC,而 Linux crontab 則使用系統的本地時區。產生器會輸出標準的五欄位運算式,但你仍應在目標排程器中加以驗證,並確認時區符合預期。此外,整個工具都在你的瀏覽器中執行,因此不會將任何排程細節傳送至伺服器,能確保你的工作定義保持私密。

Cron 運算式的運作方式
Cron 運算式由五個以空格分隔的欄位組成。每個欄位可包含數字、萬用字元、範圍、清單或步進值。以下說明每個欄位的意義:
| 欄位 | 允許值 | 特殊字元 | 範例 |
|---|---|---|---|
| 分鐘 | 0–59 | *、,、-、/ |
0、0,30、*/15 |
| 小時 | 0–23 | *、,、-、/ |
2、8-17、*/2 |
| 日期 | 1–31 | *、,、-、/、? |
1、15,30、L |
| 月份 | 1–12 或 JAN–DEC | *、,、-、/ |
1、JAN,JUN,DEC、*/3 |
| 星期幾 | 0–7(0 與 7 代表星期日)或 SUN–SAT | *、,、-、/、?、L、# |
0、MON-FRI、5L |
萬用字元與特殊字元讓你能建立靈活的排程。例如,*/5 * * * * 表示每 5 分鐘執行一次工作,而 0 0 1 * * 則表示在每月第一天的午夜執行。某些排程器(例如 Kubernetes)支援用於年份的選用第六欄位,但本產生器聚焦於多數系統所使用的標準五欄位格式。
三步驟建立 Cron 運算式
若想在不牢記欄位順序的情況下建立 cron 運算式,請使用 Cron 運算式產生器 依循下列步驟:
-
選擇排程類型:挑選符合你工作需求的頻率。可選項目如下:
- Hourly(每小時):在指定的分鐘,每 X 小時執行一次。
- Daily(每日):每天在指定時間執行。
- Weekly(每週):在指定的星期幾於指定時間執行。
- Monthly(每月):在指定的月份日期於指定時間執行。
- Yearly(每年):在指定的月份與日期於指定時間執行。
- Custom(自訂):針對進階排程手動設定每個欄位。
-
設定間隔與時間:依所選排程類型調整顯示的控制項。例如:
- 對於每小時的工作,請設定分鐘(例如 0 代表整點)以及間隔(例如每 2 小時)。
- 對於每週的工作,請挑選星期幾(例如星期一)與時間(例如 14:30)。
- 對於每月的工作,請挑選月份日期(例如 1 號、15 號或最後一天)與時間。
在你調整控制項時,工具會即時更新五欄位運算式。
-
複製並驗證運算式:當運算式符合你的排程時,請將其複製到剪貼簿。在貼到排程器之前,請先在目標環境中加以驗證。例如:
- 在 Linux crontab 中,執行
crontab -e並貼上運算式,後面接著要執行的指令。 - 在 Kubernetes 中,建立一份 CronJob 設定檔,並將
schedule欄位設為你的運算式。 - 在 AWS 或 Google Cloud 等雲端平台中,將運算式貼到排程器的設定面板。
請務必檢查排程器中的時區設定,以確保工作在預期的本地時間執行。
- 在 Linux crontab 中,執行
常見的 Cron 工作使用情境
Cron 工作能自動化許多環境中的重複性任務。以下是一些常見的使用情境及其對應的 cron 運算式,皆透過本工具產生:
| 使用情境 | 排程類型 | Cron 運算式 |
|---|---|---|
| 每天凌晨 2 點執行備份腳本 | Daily | 0 2 * * * |
| 每週一中午清理暫存檔案 | Weekly | 0 12 * * 1 |
| 每月 1 號與 15 號凌晨 3 點同步資料庫 | Monthly | 0 3 1,15 * * |
| 每 6 小時檢查系統更新 | Hourly | 0 */6 * * * |
| 每月最後一天晚上 11 點產生月度報表 | Monthly | 0 23 L * * |
| 每個工作日上午 9 點發送提醒郵件 | Weekly | 0 9 * * 1-5 |
以上範例展示了產生器如何簡化常見排程的運算式建立過程。針對更複雜的情境,例如在每週一到週五上午 9 點到下午 5 點之間每 10 分鐘執行一次工作,你可以使用自訂排程類型手動設定每個欄位。工具的即時回饋能幫助你避免語法錯誤,並確保運算式符合你的預期。
驗證並測試你的 Cron 運算式
產生 cron 運算式後,在實際依賴它之前,務必先在目標排程器中加以驗證。以下說明在不同環境中的測試方式:
-
Linux crontab:執行
crontab -e以編輯使用者的 crontab 檔案。加入一行包含運算式與用來記錄輸出的指令,例如:0 2 * * * /path/to/backup.sh >> /var/log/backup.log 2>&1在排程時間之後檢查記錄檔,以確認工作確實執行。
-
Kubernetes CronJob:建立一份 YAML 設定檔,並將運算式置於
schedule欄位。例如:apiVersion: batch/v1 kind: CronJob metadata: name: backup spec: schedule: "0 2 * * *" jobTemplate: spec: template: spec: containers: - name: backup image: busybox command: ["/bin/sh", "-c", "echo Backup completed at $(date)"] restartPolicy: OnFailure使用
kubectl apply -f backup.yaml套用設定檔,並透過kubectl get cronjobs與kubectl get jobs檢查工作狀態。 -
雲端平台:在 AWS CloudWatch Events、Google Cloud Scheduler 或 Azure Logic Apps 中,將運算式貼到排程器的設定面板。多數平台會預先顯示接下來幾次執行時間,你可用來驗證排程。例如,AWS CloudWatch Events 在你儲存規則時會顯示接下來 10 次的觸發時間。
時區處理是常見的混淆來源。Linux crontab 預設使用系統的本地時區,而 Kubernetes CronJobs 則使用 UTC。本產生器以 UTC 輸出運算式,因此若你的排程器使用不同時區,可能需要相應調整小時欄位。例如,若你希望在 UTC+2 時區於本地凌晨 2 點執行工作,請在產生器中將小時欄位設為 0(UTC 午夜)。
在除錯方面,你可以使用像 Unix 時間戳轉換器 等工具來確認 cron 運算式實際觸發的確切時間。將下一次預定執行時間轉換為你的本地時區,以確認是否符合排程。若工作未如預期執行,請檢查排程器的記錄以找出錯誤。在 Linux 中,cron 記錄通常位於 /var/log/syslog 或 /var/log/cron,而 Kubernetes 記錄則可透過 kubectl logs 檢視。
進階 Cron 運算式功能
雖然產生器涵蓋了大部分常見的排程,但一些進階的使用情境需要手動調整運算式。以下是許多排程器支援的幾項功能:
-
步進值:使用
/字元可在某個範圍內以固定間隔執行工作。例如,*/15 * * * *會每 15 分鐘執行一次工作,而0 9-17/2 * * *則會在上午 9 點到下午 5 點之間,每 2 小時執行一次。 -
範圍與列表:使用
-字元可指定範圍(例如1-5代表週一至週五),使用,字元可指定列表(例如1,15代表當月的 1 號和 15 號)。 -
當月最後一天:在「日」欄位中使用
L,即可在當月最後一天執行工作。例如,0 0 L * *會在每個月的最後一天的午夜執行。 -
帶有偏移的星期幾:使用
#可指定當月第幾個星期幾。例如,0 0 * * 1#3會在每個月第 3 個週一的午夜執行工作。 -
問號表示無特定值:在「日」或「星期幾」欄位中使用
?,表示不指定特定值。當您想設定其中一個欄位、但不設定另一個時,這個功能非常實用。例如,0 0 1 * ?會在每個月的 1 號執行工作,無論星期幾。
並非所有排程器都支援這些進階功能,因此在使用前請先查閱您所用排程器的說明文件。產生器對所有排程類型都支援步進值、範圍與列表,但若要使用 L、# 或 ?,您可能需要切換到自訂排程類型。
對於無法納入標準五欄位格式的複雜排程,建議將工作拆分為多個 cron 運算式,或使用腳本來處理邏輯。例如,如果您需要在平日每 10 分鐘執行一次工作,但週末則每小時執行一次,您可以建立兩個使用不同運算式的 cron 工作:
*/10 * * * 1-5 /path/to/job.sh
0 * * * 0,6 /path/to/job.sh
這種做法可讓運算式保持簡單且易於維護。即使是多重排程,產生器也能協助您快速建立這兩個運算式。
相關指南:如何檢查您的 JSON 格式是否正確。
如果您正在權衡各種方案,在不遺失資料的情況下從 CSV 檔案移除 BOM 對此有詳細說明。
如果您正在權衡各種方案,解析 Cron 運算式並立即查看下次執行時間 對此有詳細說明。