Biểu thức cron: hai lần mỗi ngày

0 0,12 * * * chạy hai lần mỗi ngày. Dưới đây là ý nghĩa từng trường, thời điểm chạy tiếp theo và cách dùng trong crontab, GitHub Actions, Kubernetes và Node.js.

Cập nhật

0 0,12 * * *
Biểu thức cron
Hai lần mỗi ngày
Lịch chạy

Mở trong Trình tạo biểu thức Cron →

Ý nghĩa của 0 0,12 * * *

Cron đọc năm trường từ trái sang phải: phút, giờ, ngày trong tháng, tháng và thứ trong tuần. Với hai lần mỗi ngày, các trường như sau:

TrườngGiá trịÝ nghĩaGiá trị cho phép
Phút000–59
Giờ0,1200:00, 12:000–23
Ngày trong tháng*mỗi ngày trong tháng1–31
Tháng*mỗi tháng1–12
Thứ trong tuần*mỗi ngày trong tuần0–6 (CN–T7)

Lần chạy tiếp theo

Được tính trong trình duyệt của bạn theo múi giờ của bạn. Trên máy chủ, cron dùng múi giờ của máy chủ (thường là UTC).

  1. Bật JavaScript để xem thời điểm chạy tiếp theo.

Các trường hợp thường dùng

  • Sao lưu dữ liệu hai lần mỗi ngày
  • Đồng bộ dữ liệu vào buổi sáng và buổi tối

Cần biết

Chạy lúc nửa đêm và giữa trưa. Muốn chạy vào giờ khác, hãy đổi danh sách giờ, ví dụ 0 9,17 * * *.

Dùng trong crontab, GitHub Actions, Kubernetes và Node.js

crontab (crontab -e):

0 0,12 * * * /usr/local/bin/my-job.sh >> /var/log/my-job.log 2>&1

GitHub Actions (thời gian theo UTC):

on:
  schedule:
    - cron: '0 0,12 * * *'

Kubernetes CronJob:

apiVersion: batch/v1
kind: CronJob
metadata:
  name: my-job
spec:
  schedule: "0 0,12 * * *"
  concurrencyPolicy: Forbid
  jobTemplate:
    spec:
      template:
        spec:
          restartPolicy: OnFailure
          containers:
            - name: my-job
              image: alpine:3
              command: ["sh", "-c", "echo running"]

Node.js (node-cron):

import cron from 'node-cron';
cron.schedule('0 0,12 * * *', () => {
  // your job
});

Lịch liên quan

Câu hỏi thường gặp

Biểu thức cron cho hai lần mỗi ngày là gì?
0 0,12 * * *. Chạy vào phút 0; lúc 00:00 và 12:00.
Cron dùng múi giờ nào?
Cron truyền thống dùng múi giờ địa phương của máy chủ, và nhiều máy chủ chạy theo UTC. GitHub Actions luôn dùng UTC. CronJob của Kubernetes dùng múi giờ của controller, trừ khi bạn đặt spec.timeZone (ví dụ Europe/Berlin).
Làm sao để kiểm tra biểu thức cron?
Dán biểu thức vào Trình tạo biểu thức Cron để xem bằng ngôn ngữ thường cùng thời điểm chạy tiếp theo, rồi kiểm tra nhật ký của công việc sau lần chạy đầu tiên.