Cron job là gì?
Cron là chương trình để xử lý các tác vụ lặp đi lặp lại ở lần sau. Cron Job đưa ra một lệnh để lên lịch “làm việc” cho một hành động cụ thể, tại một thời điểm cụ thể mà cần lặp đi lặp lại.
Cách viết cú pháp Cron đúng
Như đã đề cập trước đó, file crontab có 5 trường – mỗi trường đại diện bởi dấu hoa thị. Chúng dùng để xác định ngày và thời gian của tác vụ nhất định được thiết lập để hoạt động lặp đi lặp lại.
- Minute – phút của giờ mà lệnh sẽ chạy, trong khoảng từ 0 đến 59
- Hour – dựa trên giờ mà lệnh sẽ chạy, trong khoảng từ 0 đến 23
- Day of the month – dựa trên ngày của tháng mà bạn muốn chạy lệnh, trong khoảng từ 1 đến 31
- Month – dựa trên tháng mà lệnh cụ thể chạy, trong khoảng từ 1 đến 12
- Day of the week – dựa trên ngày của tuần mà bạn muốn chạy lệnh, trong khoảng từ 0 đến 7
Thêm vào đó, bạn cần dùng kí tự đúng với mỗi file crontab.
- Dấu hoa thị (*) – để xác định tất cả tham số được lên lịch
- Dấu phẩy (,) – để duy trì 2 hoặc nhiều lần thực thi một lệnh
- Dấu gạch nối (-) – để xác định khoảng thời gian thiết lập lần thực thi một lệnh
- Dấu gạch chéo (/) – để tạo khoảng thời gian nghỉ cụ thể
- Cuối cùng (L) – cho mục đích cụ thể là chỉ định ngày cuối cùng của tuần trong tháng. Ví dụ, 3L nghĩa là thứ tư cuối cùng.
- Ngày trong tuần (W) – để xác định ngày trong tuần gần nhất. Ví dụ, 1W nghĩa là nếu ngày 1 là thứ 7, lệnh sẽ chạy vào thứ hai (ngày 3)
- Hash (#) – để xác định ngày của tuần, theo sau bởi số chạy từ 1 đến 5. Ví dụ, 1#2 nghĩa là ngày thứ Hai thứ hai.
- Dấu chấm hỏi (?) – để để lại khoảng trống
Ví dụ về cú pháp của Cronjob
Bây giờ bạn đã biết cách viết cú pháp đúng. Chúng tôi sẽ cho bạn các ví dụ cụ thể để hiểu các quy tắc ở trên tốt hơn.
Trước khi tiếp tục, hãy đảm bảo output của lệnh sẽ tự động gửi đến tài khoản email của bạn. Vì vậy nếu bạn muốn dừng nhận những email này, bạn có thể thêm >/dev/null 2>&1 vào cú pháp như ví dụ bên dưới:0 5 * * * /root/backup.sh >/dev/null 2>&1
Nếu bạn muốn gửi email output đến một tài khoản cụ thể, thêm MAILTO và sau đó là địa chỉ email. Đây là ví dụ:MAILTO=”[email protected]” 0 3 * * * /root/backup.sh >/dev/null 2>&1
Đây là nhiều ví dụ về cú pháp hơn:
Diễn đạt | Ý nghĩa |
0 0 * * * /bin/sh backup.sh | Để chạy cơ sở dữ liệu backup vào giữa đêm, và chạy sau 1 ngày. |
0 6,18 * * * /bin/sh backup.sh | Để chạy backup cơ sở dữ liệu 2 lần 1 ngày lúc 6AM và 6PM. |
0 */6 * * * /scripts/monitor.sh | Để thực thi giám sát mỗi 6 giờ. |
*/10 * * * * /home/user/script.sh | Để chạy cron job cho file script đặt trong thư mục chính mỗi 10 phút. |
0 * 20 7 * /bin/sh backup.sh | Để chạy cơ sở dữ liệu backup mỗi giờ mỗi ngày 20/07. |
0 0 * * 2 * /bin/sh | Để chạy cơ sở dữ liệu backup giữa đêm mỗi thứ ba. |
* * * 1,2,5 * /script/script.sh | Để chạy lệnh vào tháng một, tháng hai và tháng năm. |
10-59/5 5 * * * /home/user/script.sh | Để chạy lệnh mỗi 5 phút lúc 5AM, bắt đầu lúc 5:10 AM. |
0 8 1 */3 * /home/user/script.sh | Để chạy lệnh hàng quý vào ngày 1 lúc 8AM. |
* * * * * /scripts/script.sh; /scripts/scrit2.sh | Để đặt lịch nhiều jobs trên cron job độc lập. |
@reboot /scripts/script.sh | Để chạy tác vụ nhất định mỗi khi bạn khởi động hệ thống. |
0 0 1 * * /home/user/script.sh | Để chạy lệnh vào ngày đầu tiên của mỗi tháng. |
Có trang web cho bạn tham khảo rõ hơn về cronjob: https://crontab.guru/