Cron là một công cụ hẹn giờ có công dụng rất lớn cho phép người dùng lên lịch các lệnh và chạy chúng một cách thường xuyên trên hệ thống Linux. Bạn có thể tạo Cron Job bằng lệnh crontab để chạy một ứng dụng hay thực thi một script bất kỳ.
Vậy làm thế nào để xây dựng các ứng dụng trên máy chủ Linux bằng công cụ Cron thông qua lệnh crontab? Câu trả lời sẽ có ngay sau đây.
Cron Job là gì?
Cron là chương trình được tích hợp sẵn trong hệ thống Linux, cho phép chạy các lệnh tự động tại một thời điểm cụ thể.
Cron Jobs là một tập hợp các lệnh và tập lệnh thực thi theo lịch trình có sẵn. Các nhà quản trị lựa chọn công cụ này để tự động hóa các tác vụ sao lưu, dọn dẹp thư mục, thông báo trên hệ điều hành Linux.
Điều kiện tiên quyết để sử dụng Cron Job:
- Hệ thống máy tính chạy Linux.
- Truy cập vào cửa sổ dòng lệnh / dòng lệnh (Ctrl-Alt-T hoặc Ctrl-Alt-F2).
- Tài khoản người dùng có đặc quyền root hoặc sudo
Cú pháp Crontab cơ bản trong Linux
Chương trình Cron sử dụng cú pháp cụ thể để diễn giải các dòng lệnh trong tệp chứa lịch trình crontab.
Dòng lệnh crontab bao gồm:
{{EJS0}}
Lệnh cron gồm có:
- Trường thời gian a b c d e xác định lịch trình của công việc.
- Trường user-name /directory/command xác định vị trí và tập lệnh được phép chạy.
- Tác vụ output là tùy chọn, giúp xác định cách hệ thống thông báo công việc đã hoàn thành.
1. Định dạng thời gian công việc Cron
Trường thời gian a b c d e đại diện cho thời điểm và tần suất chạy lệnh của Cron và mỗi khoảng phân tách là một giá trị cụ thể.
Một số giá trị cho trường và cú pháp:
Field | Giá trị khả thi | Cú pháp | Ý nghĩa |
[a] – phút | 0 – 59 | 7 * * * * | Cron job được bắt đầu khi đồng hồ hệ thống hiển thị số 7 ở vị trí của phút. |
– Giờ | 0 – 23 | 0 7 * * * | Cron Job chạy bất kỳ lúc nào đồng hồ hệ thống hiển thị 7 giờ |
[c] – Ngày | 0 – 31 | 0 0 7 * * | Cron Job sẽ bắt đầu chạy vào ngày thứ 7 của tháng. |
[d] – Tháng | 0 = không có và 12 = tháng 12 | 0 0 0 7 * | Cron Job sẽ chỉ được chạy trong tháng 7 |
[e] – Ngày trong tuần | 0 = Chủ nhật và 7 = Chủ nhật | 0 0 * * 7 | Cron Job sẽ chỉ chạy vào Chủ nhật. |
2. Lệnh thực thi
Lệnh thực thi của cron đại diện cho thư mục và tên tệp trong các tập lệnh mà bạn muốn hoàn thành.
Ví dụ: Trong lệnh backup.sh, bạn có thể xem thư mục gốc trong bất kỳ tập lệnh nào:
{{EJS1}}
3. Output (Có thể thực hiện hoặc không)
Lệnh cron sẽ gửi email đến chủ sở hữu của crontab để thuận tiện theo dõi các nhiệm vụ trong quá trình làm việc của tệp.
Tính năng tùy chọn này giúp hạn chế hộp thư đến bị đầy do công việc quá thường xuyên bằng cách thêm chuỗi >/dev/null 2>&1 sau trường thời gian và lệnh để tắt email output:
{{EJS2}}
4. Sử dụng các toán tử (Có thể thực hiện hoặc không)
Toán tử là một công cụ thao tác các dữ liệu bao gồm các ký tự đặc biệt thực hiện các phép toán của giá trị trong trường cron:
- Dấu sao (*) chỉ định tất cả các giá trị trong phạm vi thời gian như giờ, ngày, tháng.
- Dấu phẩy (,) chỉ định danh sách các giá trị riêng lẻ.
- Dấu gạch ngang (–) cho biết phạm vi của các giá trị.
- Dấu gạch chéo (/) chia giá trị thành các bước nhỏ.
Thiết lập Cron Job
Để thiết lập cron job, bạn cần mở crontab bằng trình soạn thảo văn bản và nhập cú pháp cho lệnh bạn muốn chạy.
Cách chỉnh sửa tệp crontab
Mở tệp crontab với lệnh:
{{EJS3}}
Bạn có thể thêm bất kỳ số lượng tác vụ đã lên lịch vào các dòng lệnh:
Sau khi hoàn tất, hãy lưu lại tệp và thoát. Không cần khởi động lại, các lệnh cron sẽ đọc và thực thi các tác vụ đã được cung cấp.
Chỉnh sửa crontab cho một người dùng khác
Để chỉnh sửa crontab cho người dùng khác, nhập lệnh:
{{EJS4}}
Lưu ý: Trong trường hợp này, bạn có thể lựa chọn khởi động lại hoặc không.
Ví dụ về Cron Job
Sử dụng dấu sao để chỉ định các giá trị trong các trường của lệnh cron. Ví dụ:
{{EJS5}}
Cron Job sẽ được chạy vào lúc 2 giờ với điều kiện ngày đầu tiên của tháng rơi vào thứ 4. Hoặc nếu đặt:
{{EJS6}}
Cron Job sẽ được chạy vào lúc 2 giờ và vào các ngày đầu tiên hàng tháng.
Bảng sau cung cấp một số lệnh cơ bản sử dụng tệp /root/backup.sh:
Cron Job | Yêu cầu |
Chạy Cron Job mỗi phút | * * * * * /root/backup.sh |
Chạy Cron Job cứ sau 30 phút | 30 * * * * /root/backup.sh |
Chạy Cron Job mỗi giờ | 0 * * * * / root / backup.sh |
Chạy Cron Job mỗi ngày vào lúc nửa đêm | 0 0 * * * /root/backup.sh |
Chạy Cron Job lúc 2 giờ sáng mỗi ngày | 0 2 * * * /root/backup.sh |
Chạy công việc Cron mỗi ngày 1 tháng | 0 0 1 * * /root/backup.sh |
Chạy Cron Job vào ngày 15 hàng tháng | 0 0 15 * * /root/backup.sh |
Chạy Cron Job vào ngày 1 tháng 12 – Nửa đêm | 0 0 0 12 * /root/backup.sh |
Chạy Cron Job vào Thứ Bảy lúc Nửa đêm | 0 0 * * 6 /root/backup.sh |
Sử dụng các ký tự đặc biệt
1. Sử dụng dấu gạch chéo để chia chuỗi thời gian thành các bước khác nhau.
Ví dụ: Cài đặt chạy bản sao cứ sau 15 phút:
{{EJS7}}
Dấu * có nghĩa là tất cả các giá trị và /15 là đếm và lặp lại sau mỗi 15 phút.
2. Sử dụng ký tự gạch ngang để chỉ định một phạm vi nhất định.
Ví dụ: Cài đặt chạy mã vào 4 giờ sáng mỗi ngày trong tuần:
{{EJS8}}
1-5 có nghĩa là công việc được chạy từ thứ hai – thứ 6.
3. Sử dụng dấu phẩy để liệt kê các giá trị khi chạy.
Ví dụ:
{{EJS9}}
Điều này có nghĩa là công việc sẽ chạy vào lúc 4 giờ sáng trong hai ngày thứ ba và thứ năm.
4. Một số ký tự đại diện có thể được kết hợp.
Ví dụ: Cài đặt thực hiện lệnh chạy cách ngày lúc 37 phút:
{{EJS10}}
1-23 chỉ định phạm vi giờ, /2 đặt khoảng thời gian cách nhau một giờ.
Liệt kê Cron Job đang hoạt động
Công cụ cho phép bạn liệt kê tất cả các Cron Job trên hệ thống máy chủ mà không cần mở tệp crontab. Nhập lệnh sau vào cửa sổ dòng lệnh:
{{EJS11}}
Tổng kết về cách thiết lập Cron Job trong Linux
Hy vọng qua những thông tin mà chúng tôi đã chia sẻ trên đây có thể giúp cho bạn hiểu thêm về cơ chế hoạt động và cách sử dụng Cron Job trong Linux.
Nếu có thắc mắc về những vấn đề khác của Linux, hãy để lại ở bên bình luận bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.
P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.