Hướng dẫn toàn diện về Cron Job năm 2023 cho người mới bắt đầu (Phần 2)
Để có thể dễ dàng trong việc sử dụng cron job, bạn cần phải hiểu rõ tất cả kiến thức về nó. Bài viết hướng dẫn toàn diện về Cron Job cho người mới bắt đầu 2023 sẽ tiếp tục phần trước, giới thiệu cho các bạn về cú pháp, các chuỗi đặc biệt và quyền của cron.
Table of Contents
>> Khóa học Machine Learning Developer
>> Khóa học Lập trình nhúng LOT với LUMI
3. Cú pháp Crontab
Để tạo một cron job, trước tiên cần hiểu cú pháp và định dạng của cron thì việc thiết lập mới có thể thực hiện một cách chính xác được.
Cú pháp crontab bao gồm 5 trường với các giá trị có thể có sau:
- Minute: Phút của giờ lệnh sẽ chạy, nằm trong khoảng từ 0-59.
- Hour: Giờ lệnh sẽ chạy, nằm trong khoảng từ 0-23 trong ký hiệu 24 giờ.
- Day of the month: Ngày trong tháng mà người dùng muốn lệnh chạy, nằm trong khoảng từ 1-31.
- Month: Tháng mà người dùng muốn lệnh chạy, nằm trong khoảng từ 1-12, đại diện cho tháng 1 đến tháng 12.
- Day of the week: Ngày trong tuần để lệnh chạy, nằm trong khoảng từ 0-6, đại diện cho Chủ Nhật-Thứ Bảy. Trong một số hệ thống thì giá trị 7 đại diện cho Chủ nhật.
Đừng để trống bất kỳ trường nào.
Ví dụ: Bạn muốn thiết lập cron job để chạy root/backup.sh vào lúc 5:37 chiều Thứ Sáu hàng tuần, thì lệnh cron sẽ là:
37 17 * * 5 root/backup.sh
Trong ví dụ này, 37 và 17 đại diện cho 5:37 chiều. Cả hai dấu sao cho các trường Day of the month và Month biểu thị tất cả các giá trị có thể. Điều này có nghĩa là task phải được lặp lại bất kể ngày hay tháng. 5 đại diện cho thứ sáu. Tập hợp các con số được theo sau bởi vị trí của task đó.
Nếu không chắc chắn về việc viết cú pháp cron theo cách thủ công, bạn có thể sử dụng các công cụ miễn phí như Crontab Generator hoặc Crontab.guru để tạo ra các con số chính xác về ngày và giờ bạn muốn cho lệnh của mình.
Để đặt thời gian chính xác cho lệnh cron, cần phải có kiến thức về các toán tử lệnh cron. Chúng sẽ cho phép bạn chỉ định giá trị nào muốn nhập vào mỗi trường. Bạn cần sử dụng các toán tử thích hợp trong tất cả các file crontab.
- Dấu hoa thị (*): Sử dụng toán tử này để biểu thị tất cả các giá trị có thể có trong một trường. Ví dụ: nếu bạn muốn cron job chạy mỗi phút, hãy viết dấu hoa thị vào trường Minute.
- Dấu phẩy (,): Sử dụng toán tử này để liệt kê nhiều giá trị. Ví dụ: viết 1,5 trong trường Day of the week sẽ lên lịch cho task được thực hiện vào mỗi Thứ Hai và Thứ Sáu.
- Dấu gạch nối (-): Sử dụng toán tử này để xác định một phạm vi giá trị. Ví dụ: Thiết lập một cron job từ tháng 6 đến tháng 9, viết 6-9 trong trường Month sẽ thực hiện job.
- Dấu phân cách (/): Sử dụng toán tử này để chia một giá trị. Ví dụ: nếu bạn muốn chạy tập lệnh 12 một lần, hãy viết */12 vào trường Hour.
- Cuối cùng (L): Toán tử này có thể được sử dụng trong các trường day-of-month và day-of-week. Ví dụ: viết 3L trong trường day-of-week có nghĩa là thứ Tư cuối cùng của tháng.
- Ngày trong tuần (W): Sử dụng toán tử này để xác định ngày trong tuần gần nhất từ một thời điểm nhất định. Ví dụ: nếu ngày 1 của tháng là Thứ Bảy, khi ta viết 1W vào trường day-of-month sẽ chạy lệnh vào Thứ Hai tiếp theo (ngày 3).
- Hash (#): Sử dụng toán tử này để xác định ngày trong tuần, theo sau là một số từ 1 đến 5. Ví dụ: 3 # 2 có nghĩa là ngày thứ tư thứ 2 của tháng.
- Dấu chấm hỏi (?): Sử dụng toán tử này để nhập “no specific value” cho các trường “day of the month” và “day of the week”.
4. Các chuỗi đặc biệt của cron job
Các chuỗi đặc biệt được sử dụng để lập kế hoạch cho các cron job tại các khoảng thời gian mà người dùng không cần phải tìm ra bộ số hợp lý để nhập. Để sử dụng chúng, hãy viết @ và một cụm từ đơn giản theo sau.
Dưới đây là một số chuỗi đặc biệt hữu ích mà bạn có thể sử dụng trong các lệnh:
- @hourly: Job sẽ chạy mỗi giờ một lần.
- @daily hoặc @midnight: Các chuỗi này sẽ chạy task hàng ngày vào lúc nửa đêm.
- @weekly: Job sẽ thực hiện mỗi tuần một lần vào nửa đêm Chủ nhật.
- @monthly: Chuỗi đặc biệt này chạy lệnh một lần vào ngày đầu tiên của mỗi tháng.
- @yearly: Sử dụng chuỗi này để chạy task mỗi năm một lần vào nửa đêm ngày 1 tháng 1.
- @reboot: Với chuỗi này, job sẽ chỉ chạy một lần khi khởi động.
Lưu ý: cẩn thận khi lên kế hoạch đối với các cron job nhạy cảm với múi giờ.
5. Ví dụ về cú pháp Cron
Chúng ta sẽ xem xét một số ví dụ để hiểu rõ hơn về cú pháp cron.
Đầu ra cron sẽ được tự động gửi đến tài khoản email nội bộ của bạn. Nếu muốn ngừng nhận email, bạn có thể thêm >/dev/null 2>&1 vào một lệnh như trong ví dụ sau:
0 5 * * * /root/backup.sh >/dev/null 2>&1
Nếu bạn muốn đầu ra gửi đến một tài khoản email cụ thể, hãy thêm MAILTO, sau đó là một địa chỉ email. Ví dụ:
MAILTO=”myname@hostinger.com”
0 3 * * * /root/backup.sh >/dev/null 2>&1
Xem các lệnh mẫu dưới đây để hiểu rõ hơn về cú pháp cron:
0 0 * * 0 /root/backup.sh: Thực hiện sao lưu vào lúc nửa đêm Chủ nhật hàng tuần.
0 * * * 1 /root/clearcache.sh: Xóa bộ nhớ cache mỗi giờ vào các ngày Thứ Hai.
0 6,18 * * * /root/backup.sh: Sao lưu dữ liệu ngày 2 lần vào 6h sáng và 18h chiều.
* / 10 * * * * /scripts/monitor.sh: Thực hiện giám sát 10 phút một lần.
* / 15 * * * * /root/backup.sh: Thực hiện sao lưu sau mỗi 15 phút.
* * 20 7 * /root/backup.sh: Thực hiện sao lưu mỗi phút vào ngày 20 tháng 7.
0 22 * * 1-5 /root/clearcache.sh: Xóa bộ nhớ cache mỗi ngày trong tuần (Thứ Hai đến Thứ Sáu) lúc 10 giờ tối.
0 0 * * 2 * /root/backup.sh: Thực hiện sao lưu vào nửa đêm Thứ Ba hàng tuần.
* * * 1,2,5 * /scripts/monitor.sh: Thực hiện theo dõi từng phút trong tháng Giêng, tháng Hai và tháng Năm.
10-59/10 5 * * * /root/clearcache.sh: Xóa bộ nhớ cache cứ 10 phút một lần lúc 5 giờ sáng, bắt đầu từ 5 giờ 10 phút sáng.
0 8 1 * / 3 * /home/user/script.sh: Thực hiện nhiệm vụ hàng quý vào ngày đầu tiên của tháng lúc 8 giờ sáng.
0 * * * * /root/backup.sh: Tạo một bản sao lưu mỗi giờ.
* * * * * /scripts/script.sh; /scripts/scrit2.sh: Bao gồm nhiều nhiệm vụ trên một công việc cron duy nhất. Hữu ích cho việc lập lịch chạy nhiều tác vụ cùng lúc.
@reboot /root/clearcache.sh: Xóa bộ nhớ cache mỗi khi bạn bật hệ thống.
0 8 1-7 * 1 /scripts/script.sh: Chạy tập lệnh vào thứ Hai đầu tiên của mỗi tháng, lúc 8 giờ sáng.
5 4 * * 0 /root/backup.sh: Tạo một bản sao lưu lúc 4:05 sáng Chủ Nhật hàng tuần.
15 9 1,20 * * /scripts/monitor.sh: Thực hiện quan trắc vào lúc 21h15 các ngày 01 và 20 hàng tháng.
@hourly /scripts/monitor.sh: Thực hiện giám sát hàng giờ.
0 0 1,15 * 3 /scripts/script.sh: Chạy tập lệnh vào lúc nửa đêm Thứ Tư hàng tuần từ ngày 1 đến ngày 15 hàng tháng.
15 14 1 * * /root/clearcache.sh: Xóa bộ nhớ cache vào ngày đầu tiên hàng tháng lúc 2:15 chiều.
00 08-17 * * 1-5 bin / check-db-status: Kiểm tra trạng thái cơ sở dữ liệu mỗi ngày từ Thứ Hai đến Thứ Sáu mỗi giờ từ 8 đến 5 giờ chiều.
15 6 1 1 * /root/backup.sh: Thực hiện sao lưu vào ngày 1 tháng 1 lúc 6:15 sáng.
0 0 * * * /scripts/monitor.sh: Chạy tập lệnh giám sát mỗi ngày một lần vào lúc nửa đêm.
0 0 15 * * /root/clearcache.sh: Xóa bộ nhớ cache vào lúc nửa đêm ngày 15 hàng tháng.
* * * * 1,5 /scripts/monitor.sh: Thực hiện giám sát thứ 2 và thứ 6 hàng tuần.
6. Quyền của Cron
Hai file sau có thể được tạo hoặc chỉnh sửa để cho phép hoặc hạn chế người dùng sử dụng file cron của hệ thống:
- /etc/cron.allow – nếu cron.allow tồn tại, nó phải chứa tên của người dùng để cho phép họ sử dụng cron job.
- /etc/cron.deny – nếu cron.allow không tồn tại nhưng có cron.deny, thì người dùng muốn sử dụng cron job sẽ không được liệt kê trong file.
Kết luận
Thiết lập để các job được lên lịch tự động là một giải pháp thiết thực giúp chúng ta sẽ không bị quên các task quan trọng.
Cron job là một cách tuyệt vời để quản trị viên hệ thống và các nhà lập trình web có thể quản lý các task lặp đi lặp lại. Tất cả những điều cần làm là nhập các lệnh thích hợp và chọn chính xác thời gian thực hiện.
Để lên lịch một cron job, hãy sử dụng cú pháp chính xác trong dòng lệnh. Ngoài ra, bạn có thể sử dụng các chuỗi đặc biệt để quá trình lập lịch dễ dàng hơn. Hãy lưu ý gán quyền cho thích hợp, vì chỉ những người dùng được ủy quyền mới có thể truy cập vào file cron.
FUNiX hy vọng rằng bài viết này đã giúp bạn hiểu cơ bản về việc sử dụng cron job để lập lịch cho nhiều task. Hẹn gặp lại bạn ở bài viết tiếp theo.
>>> Nếu bạn đang có nhu cầu học lập trình trực tuyến, tìm hiểu ngay tại đây:
>>> Xem thêm bài viết:
Đại học trực tuyến? Tại sao nên chọn học đại học trực tuyến thay vì đại học offline?
5 điều có thể bạn chưa biết về học lập trình trực tuyến FUNiX
Review khóa học trực tuyến FUNiX FPT đang được nhiều bạn trẻ lựa chọn
FUNiX đào tạo lập trình trực tuyến cung cấp nhân sự tập đoàn FPT
5 Điểm đáng chú ý tại khóa học lập trình trực tuyến FPT – FUNiX
Phạm Thị Thanh Ngọc ( theo Hostinger )
Bài tham khảo: https://www.hostinger.com/tutorials/cron-job
Bình luận (0
)