Crontab là gì? Các ví dụ về Crontab trong 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.
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.
Để 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.
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.
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.
Mọi người cùng tìm kiếm: crontab, crontab linux, crontab -r, crontab là gì, crobtab, cron linux, cron tab, crontime
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:
👉 Liên hệ ngay KDATA hỗ trợ tận tình, support tối đa, giúp bạn trải nghiệm dịch vụ giá hời chất lượng tốt nhất