Biểu thức cron: vào thứ Hai đầu tiên của tháng

0 9 1-7 * * chạy vào thứ Hai đầu tiên của tháng. 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 9 1-7 * *
Biểu thức cron
Vào thứ Hai đầu tiên của tháng
Lịch chạy

Mở trong Cron Expression Generator →

Ý nghĩa của 0 9 1-7 * *

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 vào thứ Hai đầu tiên của tháng, các trường như sau:

TrườngGiá trịÝ nghĩaCho phép
Phút000–59
Giờ909:000–23
Ngày trong tháng1-7từ 1 đến 71–31
Tháng*mỗi tháng1–12
Thứ trong tuần*mỗi ngày trong tuần0–6 (Chủ nhật–Thứ Bảy)

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. Hãy bật JavaScript để xem thời gian chạy tiếp theo.

Các trường hợp sử dụng phổ biến

  • Họp nhóm hàng tháng
  • Báo cáo hàng tháng vào một ngày trong tuần

Cần biết

Cron chuẩn không thể tự diễn đạt “thứ Hai đầu tiên”. Hãy chạy lúc 9:00 vào các ngày 1–7 và chỉ cho lệnh tiếp tục chạy vào thứ Hai: 0 9 1-7 * * [ "$(date +\%u)" = 1 ] && /job.sh. Đừng viết 0 9 1-7 * 1: khi cả hai trường ngày đều được đặt, cron cổ điển chạy khi một trong hai điều kiện khớp, nên lệnh cũng sẽ chạy mỗi thứ Hai.

Cách dùng trong crontab, GitHub Actions, Kubernetes và Node.js

crontab (crontab -e):

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

GitHub Actions (thời gian tính theo UTC):

on:
  schedule:
    - cron: '0 9 1-7 * *'

Kubernetes CronJob:

apiVersion: batch/v1
kind: CronJob
metadata:
  name: my-job
spec:
  schedule: "0 9 1-7 * *"
  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 9 1-7 * *', () => {
  // your job
});

Lịch liên quan

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

Biểu thức cron cho vào thứ Hai đầu tiên của tháng là gì?
0 9 1-7 * *. Lệnh chạy ở phút 0, lúc 09:00, vào các ngày từ 1 đến 7.
Cron dùng múi giờ nào?
Cron cổ điển dùng múi giờ cục bộ của máy chủ, và nhiều máy chủ chạy theo UTC. GitHub Actions luôn dùng UTC. Kubernetes CronJob 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 Cron Expression Generator để xem bằng ngôn ngữ thường kèm thời gian chạy tiếp theo, rồi kiểm tra log của công việc sau lần chạy theo lịch đầu tiên.