Tìm hiểu các thông số cấu hình Cron job
Vừa rồi, tớ có task phải làm 1 con scheduler xoá dữ liệu rác, 1 tháng chạy 1 lần. Trước giờ tớ chạy cron job bằng công cụ hỗ trợ của server, có UI nên cũng đếch quan tâm cơ chế nó cấu hình như nào, cứ táng đúng ngày-tháng-năm giờ-phút-giây vào đúng ô, click OK là nó tự generate ra cấu hình. That’s all =)).
Tuy nhiên lần này tớ phải động tới cấu hình cho cron job. Tiện tìm hiểu nó nên note lại 1 bài :))
Chức năng của Cron Jo là để thực hiện những lệnh được yêu cầu trong khoảng thời gian được xác đinh từ đầu bởi quản trị viên/ người điều hành Hosting. Nói dễ hiểu, Cron Job là chức năng hỗ trợ lên lịch tự động để thực hiện 1 số thao tác, công việc nào đó.
Cấu trúc cấu hình cron job
Cron job thường có dạng
cron = "X X X X X" (5 kí tự)
hay
cron = "X X X X X X" (6 kí tự)
Đối với 5 kí tự thì đó là:
<phút> <giờ> <ngày trong tháng> <tháng> <ngày trong tuần>
Còn với 6 kí tự thì thêm giây nữa:
<giây> <phút> <giờ> <ngày> <tháng> <ngày trong tuần>
Các kí tự X được thay thế bởi một trong các kí tự sau:
* : bất kì giá trị nào , : danh sách các giá trị - : khoảng giá trị / : theo bước nhảy
Đầu tiên đọc lướt qua dống này, tớ chợt nghĩ: dễ vkl. Giờ muốn cho nó chạy 2s 1 lần để test cái scheduler thì táng config
cron = "2 * * * * *"
có mẹ gì khó đâu :v. Tuy nhiên thì khi chạy test thì sai “cờ mờ nờ rờ”. Nó chạy 1 phút 1 lần. Đó là giây thứ 2 của mỗi phút, không phải mỗi 2s 1 lần. Như vậy, config của cron chính xác phải là:
<giây trong phút> <phút trong giờ> <giờ trong ngày> <ngày trong tháng> <tháng trong năm> <ngày trong tuần>
Config 2s 1 lần kiểu gì?
Cùng nhìn vào đống kí tự có thể thay thế của X, ta có thể cấu hình chạy 2s 1 lần bằng các cách sau:
Sử dụng “,”
Dấu “,” đại diện cho danh sách các giá trị. Nghĩa là bạn muốn chạy 2s 1 lần thì bạn liệt kê các giá trị giây cách nhau 2s xuất hiện trong một phút.
cron= "0,2,4,6,8,10,12,14,16,18,20.... 58 * * * * *"
Cách này khá là thủ công, chỉ nên dùng khi bạn sử dụng để cấu hình cho 1 vài giá trị đặc biệt, không có quy luật.
Sử dụng “-“
Dấu “-” đại diện cho khoảng giá trị. Ví dụ bạn muốn chạy vào các giây 1,2,3,4,5,6 thì bạn có thể dùng “-” cho ngắn gọn hơn, thay vì “,”. Đó là:
cron="1-6 * * * * *"
Tất nhiên là config này không sử dụng được cho 2s 1 lần. Tiện thì tớ giới thiệu luôn :))
Sử dụng “/”
Dấu “/” đại diện cho bước nhảy của giá trị, tính từ 0. Giả sử với kí tự ở vị trí của giây, tớ config:
*/1 => bước nhảy 1, tính từ 0: 0,1,2,3,4,...,59 */2 => bước nhảy 2, tính từ 0: 0,2,4,6,8,...,58 */5 => bước nhảy 5, tính từ 0: 0,5,10,15,...,55
Ngoài ra có thể thay dấu “*” là các vị trí bắt đầu của bước nhảy. Ví dụ
5/1 => bước nhảy 1, tính từ 5: 5,6,7,8,...59 5/8 => bước nhảy 8, tính từ 5: 5,13,21,29 13/4 => bước nhảy 4, tính từ giây thứ 13 blah,blah....
Tuy nhiên đây là “non-standard config”, tức là không phải config tiêu chuẩn nên có thể sẽ không hoạt động trên một số hệ thống cron job.
Như vậy để config 2s/lần thì config “dư lày”:
cron="*/2 * * * * *"
Done :))
Crontab.guru
1 trang web khá hay là https://crontab.guru. Crontab cho phép bạn nhập vào cấu hình và đưa ra kết quả ở dạng giải thích: “At every minute“, “At 00:00“, … khá dễ hiểu. Ngoài ra bạn có thể click vào “next” như hình để xem 1 vài ví dụ.
Bổ sung
Ngoài crontab.guru thì có trang http://www.cronmaker.com/ cũng là 1 tool giúp chúng ta tạo cronjob tốt hơn, với lượng example rộng hơn. Thanks @Jack đã suggest.
Tổng kết về SEO title preview:Cron job
Qua bài này, hi vọng có thể giúp bạn hiểu hơn được về cách cấu hình.
Hãy nhớ: “Cron job failures can be disastrous!”
Bài viết gốc được đăng tải tại Minhphong360
Có thể bạn muốn xem thêm:
- Hướng dẫn sử dụng Cron Job trong Laravel 5.8
- Nghệ thuật xử lý background job
- Docker – Config Docker Trên WordPress
Xem thêm việc làm IT tại TopDev!
- B BenQ RD Series – Dòng Màn Hình Lập Trình 4k+ Đầu Tiên Trên Thế Giới
- i iOS 18 có gì mới? Có nên cập nhật iOS 18 cho iPhone của bạn?
- G Gamma AI là gì? Cách tạo slide chuyên nghiệp chỉ trong vài phút
- P Power BI là gì? Vì sao doanh nghiệp nên sử dụng PBI?
- K KICC HCMC x TOPDEV – Bước đệm nâng tầm sự nghiệp cho nhân tài IT Việt Nam
- T Trello là gì? Cách sử dụng Trello để quản lý công việc
- T TOP 10 SỰ KIỆN CÔNG NGHỆ THƯỜNG NIÊN KHÔNG NÊN BỎ LỠ
- T Tìm hiểu Laptop AI – So sánh Laptop AI với Laptop thường
- M MySQL vs MS SQL Server: Phân biệt hai RDBMS phổ biến nhất
- S SearchGPT là gì? Công cụ tìm kiếm mới có thể đánh bại Google?