Crontab là gì? Các ví dụ về Crontab trong Linux

Crontab sẽ giúp thực hiện các nhiệm vụ định kỳ, từ những công việc nhỏ hàng ngày đến các tác vụ quan trọng hàng năm. Trong bài viết này, chúng ta sẽ khám phá Crontab thông qua một số ví dụ thực tế để hiểu rõ hơn về sức mạnh và tính linh hoạt mà nó mang lại trong quản lý hệ thống Linux.

Crontab là gì?

Crontab là một danh sách các lệnh mà bạn muốn chạy theo lịch trình đều đặn, và cũng là tên của lệnh được sử dụng để quản lý danh sách đó. Crontab được viết tắt từ "cron table", bởi vì nó sử dụng trình lên lịch công việc cron để thực hiện các nhiệm vụ; cron chính nó được đặt tên theo "chronos", từ tiếng Hy Lạp có nghĩa là thời gian. Cron là tiến trình hệ thống sẽ tự động thực hiện các nhiệm vụ cho bạn theo một lịch trình cố định. Lịch trình này được gọi là crontab, cũng là tên của chương trình được sử dụng để chỉnh sửa lịch trình đó. Định dạng Crontab trên Linux:

MIN HOUR DOM MON DOW CMD

Trường Crontab và phạm vi cho phép (cú pháp Crontab trên Linux)

Field Description Allowed Value
MIN Minute field 0 to 59
HOUR Hour field 0 to 23
DOM Day of Month 1-31
MON Month field 1-12
DOW Day Of Week 0-6
CMD Command Any command to be executed.

Một số ví dụ về Crontab

1. Lên lịch công việc cho một thời điểm cụ thể

Sử dụng cơ bản của cron là thực hiện một công việc vào một thời điểm cụ thể như dưới đây. Điều này sẽ thực hiện kịch bản lệnh sao lưu đầy đủ (full-backup) vào lúc 08:30 sáng ngày 10 tháng 6. Trường thời gian sử dụng định dạng 24 giờ. Vì vậy, để 8 giờ sáng sử dụng 8, và để 8 giờ tối sử dụng 20.

30 08 10 06 * /home/maverick/full-backup

30 – Phút thứ 30, 08 – 08 giờ sáng, 10 – Ngày thứ 10, 06 – Tháng thứ 6 (Tháng Sáu), * – Mỗi ngày trong tuần

2. Xem các mục trong Crontab

Xem các mục trong Crontab của người dùng hiện tại: Để xem các mục trong crontab của bạn, hãy nhập crontab -l từ tài khoản Unix của bạn.

Crontab là gì? Các ví dụ về Crontab trong Linux

Xem các mục trong Crontab của người dùng Root: Đăng nhập với tư cách người dùng root (su - root) và thực hiện lệnh crontab -l.

Crontab là gì? Các ví dụ về Crontab trong Linux

Để xem các mục trong crontab của người dùng Linux khác: Đăng nhập với quyền root và sử dụng -u {tên_người_dùng} -l.

Crontab là gì? Các ví dụ về Crontab trong Linux

3. Chỉnh sửa các mục trong Crontab

Chỉnh sửa các mục trong Crontab của người dùng hiện tại. Để chỉnh sửa các mục trong crontab, sử dụng lệnh crontab -e. Theo mặc định, điều này sẽ chỉnh sửa crontab của người dùng hiện tại đã đăng nhập.

Crontab là gì? Các ví dụ về Crontab trong Linux

4. Lên lịch công việc mỗi phút bằng Cron

Thực tế có thể bạn sẽ không cần phải lên lịch một công việc mỗi phút. Nhưng việc hiểu ví dụ này sẽ giúp bạn hiểu các ví dụ khác.

* * * * * CMD

Dấu * có nghĩa là tất cả các đơn vị có thể có — nghĩa là mỗi phút trong mỗi giờ qua cả năm. Thay vì sử dụng * trực tiếp, bạn sẽ thấy nó rất hữu ích trong những trường hợp sau đây. Khi bạn chỉ định */5 trong trường phút có nghĩa là mỗi 5 phút. Khi bạn chỉ định 0-10/2 trong trường phút có nghĩa là mỗi 2 phút trong 10 phút đầu tiên. Do đó, quy ước trên có thể được sử dụng cho tất cả các trường khác.

5. Lên lịch công việc cho nhiều thời điểm (ví dụ: hai lần mỗi ngày)

Đoạn mã sau thực hiện sao lưu tăng dần hai lần mỗi ngày. Ví dụ này thực hiện kịch bản lệnh sao lưu tăng dần đã được chỉ định (incremental-backup) vào lúc 11:00 và 16:00 hàng ngày. Giá trị được phân tách bằng dấu phẩy trong một trường chỉ định rằng lệnh cần được thực thi vào tất cả các thời điểm được nêu ra.

00 11, 16 * * * /home/maverick/bin/incremental-backup

00 – Phút thứ 0 (đầu giờ) 11, 16 – 11 giờ sáng và 4 giờ chiều * – Mỗi ngày * – Mỗi tháng * – Mỗi ngày trong tuần

6. Lên lịch công việc cho một khoảng thời dian nhất định (ví dụ: chỉ vào các ngày trong tuần)

Nếu bạn muốn lên lịch một công việc mỗi giờ trong một khoảng thời gian cụ thể, chẳng hạn chỉ vào các ngày trong tuần, hãy sử dụng cấu trúc sau.

  • Công việc Cron hàng ngày trong giờ làm việc: Ví dụ này kiểm tra trạng thái của cơ sở dữ liệu mỗi ngày (kể cả cuối tuần) trong khoảng giờ làm việc từ 9 giờ sáng đến 6 giờ chiều.
00 09-18 * * * /home/maverick/bin/check-db-status

00 – Phút thứ 0 (đầu giờ) 09-18 – 9 giờ sáng, 10 giờ sáng, 11 giờ sáng, 12 giờ trưa, 1 giờ chiều, 2 giờ chiều, 3 giờ chiều, 4 giờ chiều, 5 giờ chiều, 6 giờ chiều * – Mỗi ngày * – Mỗi tháng 1-5 – Từ thứ Hai đến thứ Sáu (ngày làm việc)

  • Công việc Cron mỗi ngày trong tuần trong giờ làm việc: Ví dụ này kiểm tra trạng thái của cơ sở dữ liệu mỗi ngày làm việc (tức là loại bỏ Thứ Bảy và Chủ Nhật) trong khoảng giờ làm việc từ 9 giờ sáng đến 6 giờ chiều.
00 09-18 * * 1-5 /home/maverick/bin/check-db-status

00 – Phút thứ 0 (đầu giờ) 09-18 – 9 giờ sáng, 10 giờ sáng, 11 giờ sáng, 12 giờ trưa, 1 giờ chiều, 2 giờ chiều, 3 giờ chiều, 4 giờ chiều, 5 giờ chiều, 6 giờ chiều * – Mỗi ngày * – Mỗi tháng 1-5 -Thứ Hai, Thứ Ba, Thứ Tư, Thứ Năm, Thứ Sáu (Mỗi Ngày Làm Việc)

7. Lên lịch công việc nền mỗi 10 phút

Sử dụng cấu trúc sau nếu bạn muốn kiểm tra không gian đĩa mỗi 10 phút.

*/10 * * * * /home/maverick/check-disk-space

Nó thực hiện lệnh cụ thể check-disk-space mỗi 10 phút trong suốt cả năm. Tuy nhiên, có thể có yêu cầu chỉ thực hiện lệnh trong một số giờ cụ thể hoặc ngược lại. Các ví dụ trên chỉ ra cách thực hiện những điều đó. Thay vì chỉ định giá trị trong 5 trường, chúng ta có thể chỉ định chúng bằng một từ khóa duy nhất như sau. Có các trường hợp đặc biệt trong đó thay vì sử dụng 5 trường trên, bạn có thể sử dụng @ theo sau một từ khóa — chẳng hạn như reboot, midnight, yearly, hourly. Các từ khóa đặc biệt trong Crontab và ý nghĩa của chúng:

Keyword Equivalent
@yearly 0 0 1 1 *
@daily 0 0 * * *
@hourly 0 * * * *
@reboot Run at startup.

8. Lên lịch công việc cho phút đầu tiên của mỗi năm, sử dụng từ khóa @yearly

Nếu bạn muốn một công việc được thực thi vào phút đầu tiên của mỗi năm, bạn có thể sử dụng từ khóa cron @yearly như dưới đây. Điều này sẽ thực hiện bảo dưỡng hàng năm của hệ thống bằng cách sử dụng kịch bản lệnh annual-maintenance lúc 00:00 ngày 1 tháng 1 hàng năm.

@yearly /home/maverick/bin/annual-maintenance

9. Lên lịch công việc Cron vào đầu mỗi tháng, sử dụng từ khóa @monthly

Tương tự như @yearly như trên, @monthly thực hiện lệnh một lần mỗi tháng. Ví dụ này sẽ thực hiện kịch bản lệnh tape-backup lúc 00:00 ngày 1 mỗi tháng.

@monthly /home/maverick/bin/tape-backup

10. Lên lịch công việc nền mỗi ngày, sử dụng từ khóa @daily

Sử dụng từ khóa cron @daily, điều này sẽ thực hiện làm sạch các tệp nhật ký hàng ngày bằng cách sử dụng kịch bản lệnh cleanup-logs lúc 00:00 hàng ngày.

@daily /home/maverick/bin/cleanup-logs "day started"

11. Thực hiện một lệnh Linux sau mỗi lần khởi động, sử dụng từ khóa @reboot

Sử dụng từ khóa cron @reboot, điều này sẽ thực hiện lệnh cụ thể một lần sau mỗi lần khởi động máy.

@reboot CMD

Qua những ví dụ về Crontab trong Linux, chúng ta đã nhìn nhận sức mạnh và linh hoạt mà công cụ này mang lại trong quản lý hệ thống. Việc lên lịch các công việc định kỳ, thực hiện chúng vào các thời điểm cụ thể, và thậm chí là thiết lập các công việc tự động sau mỗi lần khởi động máy là những tiện ích quan trọng mà Crontab mang lại cho người quản trị hệ thống Linux. Điều này không chỉ giúp tối ưu hiệu suất mà còn làm giảm công sức và rủi ro sai sót trong quản lý hệ thống.

Các gói dịch vụ Cloud VPS của KDATA mang đến cho bạn nhiều lựa chọn về hiệu suất cũng như khả năng lưu trữ, mọi nhu cầu về doanh nghiệp đều được đáp ứng. KDATA đảm bảo khả năng uptime lên đến 99,99%, toàn quyền quản trị và free backup hằng ngày. Tham khảo ngay các gói dịch vụ Cloud VPS:

https://kdata.vn/cloud-vps