# Cron job là gì? Cách đặt lịch chạy tự động trên server và lỗi hay gặp

URL: https://opcaios.org/blog/cron-job-la-gi
Ngày: 2026-11-15
Cập nhật: 2026-10-25
Tác giả: Lê Quốc Nghĩa
Chuyên mục: Hướng dẫn

Cron job là gì? Cron là trình lập lịch theo thời gian phổ biến trên hệ Unix; các tác vụ nó chạy theo lịch gọi là cron job, thường dùng cho bảo trì hệ thống nhưng có thể tự động hoá việc bất kỳ. Theo Wikipedia (đọc ngày 25/10/2026), mỗi dòng trong tệp crontab có năm trường thời gian rồi tới lệnh: phút, giờ, ngày trong tháng, tháng, ngày trong tuần. Bài này giải thích cron job là gì, cú pháp năm trường, các chuỗi tắt, giới hạn, lỗi hay gặp và kinh nghiệm của OPCAIOS.

![Sơ đồ cron job: năm trường thời gian phút giờ ngày tháng thứ, ví dụ lịch hằng ngày, chuỗi tắt, và các lỗi hay gặp như múi giờ, máy tắt, thiếu nhật ký](https://opcaios.org/images/blog/cron-job-la-gi-b/so-do.webp)
*Năm trường thời gian rồi lệnh: viết lịch chính xác, nhớ múi giờ. Sơ đồ: OPCAIOS.*

## Cron job là gì và bắt nguồn từ đâu?

Cron là dịch vụ chạy nền kiểm tra có tác vụ nào đến hạn và chạy chúng. Tên lấy từ chữ Hy Lạp chỉ thời gian, Chronos. Bản Version 7 Unix ban đầu kiểm tra mỗi phút, gây lãng phí; bản của Đại học Purdue năm 1979 ngủ đến lúc tác vụ kế tiếp đến hạn và mở rộng cho mọi người dùng.

Ngày nay bản Vixie cron là phổ biến nhất theo Wikipedia. Cron hợp với việc lặp lại; việc chỉ chạy một lần thì nên dùng `at`. Nếu bạn dùng [VPS](/blog/vps-la-gi), cron là công cụ lập lịch cơ bản nhất của máy chủ.

## Cú pháp crontab năm trường

Mỗi dòng crontab gồm năm trường rồi lệnh: phút (0–59), giờ (0–23), ngày trong tháng (1–31), tháng (1–12), ngày trong tuần (0–6, từ Chủ nhật). Dấu `*` nghĩa là "mọi giá trị", dấu phẩy liệt kê, dấu gạch nối là khoảng, dấu gạch chéo là bước.

| Lịch | Dòng crontab | Ý nghĩa |
|---|---|---|
| Mỗi ngày 03:00 | `0 3 * * * lenh` | Phút 0, giờ 3, mọi ngày |
| Mỗi 15 phút | `*/15 * * * * lenh` | Bước 15 phút |
| Thứ Hai 08:30 | `30 8 * * 1 lenh` | Ngày trong tuần = 1 |
| Ngày 1 hằng tháng | `0 0 1 * * lenh` | Nửa đêm ngày mùng 1 |

Có các chuỗi tắt theo Wikipedia: `@yearly`, `@monthly`, `@weekly`, `@daily`, `@hourly` và `@reboot` (chạy khi dịch vụ khởi động). Ghi chú: với bước như `*/5` ở trường ngày, cron không nhớ lần chạy trước nên khoảng cách không phải lúc nào cũng đều.

## Những giới hạn và lỗi hay gặp

Lỗi phổ biến nhất là sai múi giờ, môi trường chạy khác môi trường đăng nhập (thiếu biến môi trường và PATH), không ghi nhật ký nên lỗi im lặng, và máy tắt đúng giờ chạy nên tác vụ bị bỏ lỡ.

- **Múi giờ:** mặc định theo múi giờ hệ thống, trừ khi đặt dòng `CRON_TZ`. Hãy biết máy chủ của bạn dùng múi giờ nào.
- **Môi trường tối giản:** dùng đường dẫn tuyệt đối cho lệnh và tệp.
- **Chạy chồng:** tác vụ lâu hơn khoảng lặp sẽ chồng nhau; dùng khoá để chỉ một bản chạy.
- **Bỏ lỡ khi máy tắt:** Wikipedia không bàn kỹ; anacron được gộp vào cronie năm 2009 nhưng bài không nêu chi tiết công dụng. Với máy không chạy 24/7 hãy cân nhắc lập lịch khác.
- **Không có thông báo lỗi:** chuyển đầu ra vào tệp nhật ký, và thêm cảnh báo khi thất bại.

## Cron và các cách lập lịch khác

Cron đơn giản và sẵn có nhưng không có giao diện, không thử lại tự động và chỉ chạy trên một máy. Với quy trình nhiều bước hoặc cần nhìn thấy trạng thái, công cụ workflow phù hợp hơn.

| Cách | Mạnh | Yếu |
|---|---|---|
| cron trên server | Nhẹ, có sẵn, ổn định | Không giao diện, tự lo nhật ký, một máy |
| Công cụ workflow ([n8n](/blog/n8n-la-gi), [Make](/blog/make-la-gi)) | Giao diện, thử lại, nối dịch vụ | Cần vận hành thêm một hệ |
| Lên lịch trong ứng dụng | Gần mã nghiệp vụ | Phải tự viết, tự giám sát |
| Lập lịch của công cụ agent | Tiện cho tác vụ AI | Phụ thuộc sản phẩm |

Muốn bắt đầu tự động hoá từ đâu, xem [làm một mình thì nên tự động hoá việc gì trước](/blog/bat-dau-tu-dong-hoa-tu-dau).

## Kinh nghiệm của OPCAIOS

Chúng tôi dùng cron cho sao lưu cơ sở dữ liệu hằng ngày trên máy chủ: kịch bản ghi chú rằng giờ máy chủ là Europe/London nên lịch 21:00 tương ứng khoảng 03:00 giờ Việt Nam, và đầu ra được chuyển vào tệp nhật ký. Kịch bản còn kiểm tra bản sao lưu có bảng quan trọng trước khi coi là thành công. Xem [sao lưu 3-2-1](/blog/backup-3-2-1-cho-nguoi-lam-mot-minh).

Điều chúng tôi rút ra là lỗi múi giờ rất dễ xảy ra nên ghi rõ múi giờ ngay trong chú thích kịch bản. Hạn chế: chúng tôi không công bố đường dẫn hay lịch đầy đủ của máy chủ, và bài này chưa so sánh hiệu năng giữa các cách lập lịch.

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

### Cron chạy được trên Windows không?
Cron là của hệ Unix. Windows có Task Scheduler; chúng tôi chưa so sánh chi tiết nên bài này tập trung vào cron.

### Làm sao kiểm tra cron job đã chạy?
Chuyển đầu ra vào tệp nhật ký và kiểm tra thời gian cập nhật; thêm cảnh báo khi thất bại thay vì chỉ trông chờ vào việc không có lỗi.

### Vì sao lệnh chạy được khi gõ tay nhưng cron không chạy?
Thường do môi trường khác (thiếu PATH, biến môi trường) hoặc đường dẫn tương đối. Dùng đường dẫn tuyệt đối.

### Cron có thể chạy mỗi giây không?
Đơn vị nhỏ nhất của crontab là phút, theo cú pháp năm trường.

### Tôi nên bắt đầu từ đâu?
Tạo một tác vụ đơn giản ghi dòng vào tệp mỗi 5 phút để kiểm tra, rồi thay bằng việc thật. Cần hỗ trợ dựng quy trình tự động, xem [dịch vụ đào tạo ứng dụng AI](/services/dao-tao-ung-dung-ai).

*Nguồn: Wikipedia, "Cron", đọc ngày 25/10/2026; bài tổng hợp không bàn kỹ về tác vụ bị bỏ lỡ khi máy tắt hay công dụng của anacron. Bảng ví dụ lịch là minh hoạ của OPCAIOS. Kinh nghiệm là của OPCAIOS.*
