Cron job: Cho người mới

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.

5 trường của Crontab
  • 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/

Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *