Crontab là gì? Hướng dẫn sử dụng Crontab Linux

Bạn đang chán nản khi phải làm những việc có tính lặp lại trên hệ điều hành Linux và các bản phân phối của Linux? Đừng lo, chúng ta đã có Crontab hỗ trợ. Vậy, Crontab là gì? Crontab hoạt động ra sao và cách để sử dụng Crontab như thế nào? Tất cả sẽ có trong bài viết này của Trang thủ thuật nhé!

Tìm hiểu về Crontab

Crontab là gì?

Hiểu đơn giản, Crontab (Cron Table) là một daemon lập lịch công việc dựa trên thời gian theo chỉ định và có mặt trong các hệ điều hành như Unix, Linux và các bản phân phối của Linux. Crontab có khả năng chạy độc lập trong nền, chúng ta sẽ lập lịch công việc với cron (Cron schedule) và những công việc sẽ được gọi là “Cron Job”. Sau khi lập lịch, Cron Job sẽ tự động thực hiện theo thời gian chỉ định và thường là các tác vụ liên quan đến bảo trì định kỳ.

crontab-la-gi

Crontab hoạt động ra sao?

Nghe phần giải thích về Crontab, có lẽ bạn nghĩ Cron Schedule sẽ là một thứ gì đó rất hấp dẫn đúng không?

Không, Cron Schedule chỉ là một file text và thường nằm ở vị trí là ở /var/spool/cron. Bạn sẽ không thể dùng các tệp thông thường hoặc chỉnh sửa trực tiếp bằng các phần mềm edit. Cách duy nhất bạn có thể sử dụng là dùng lệnh Crontab.

Để hiểu được cách Crontab hoạt động, chúng ta sẽ tìm hiểu về cấu trúc của một Crontab ra sao nhé!

Cấu trúc của một Crontab sẽ bao gồm 5 trường xác định thời gian và cuối cùng sẽ là lệnh để chạy theo định kỳ như sau:

crontab-la-gi

Ví dụ, bạn muốn lưu trữ dữ liệu vào giữa tuần, đầu tháng và giữa tháng, bạn có thể thực hiện lệnh như sau:

  • 0 0 1,15 * 3 * /tino.org/backup

Lệnh có nghĩa là vào lúc 00:00 ngày 1 và 15 của tháng và vào thứ 4.

Hướng dẫn sử dụng Crontab Linux

Trên thị trường có rất nhiều bản phân phối của Linux. Do đó, Trang thủ thuật sẽ hướng dẫn phiên bản phổ biến nhất và có nhiều người sử dụng nhất là Ubuntu 18.04 nhé! Với những lệnh trong bài, bạn vẫn có thể áp dụng được cho những bản phân phối khác hoặc dùng phương pháp “bí mật” Trang thủ thuật sẽ hướng dẫn cuối bài để bạn không cần biết code vẫn có code Crontab để dùng!

Điều kiện để sử dụng

Để sử dụng được Crontab, bạn sẽ cần phải đáp ứng được những yêu cầu tối thiểu như sau:

  • Hệ điều hành Ubuntu 18.04 trở lên và có thể là máy cục bộ của bạn, máy ảo hoặc máy chủ riêng.
  • Người dùng với quyền với quyền root hoặc quản trị viên cao cấp

Hướng dẫn cài đặt Crontab

Phần lớn các bản phân phối của Linux đều có sẵn các dạng cron cài đặt theo mặc định. Trong trường hợp bạn sử dụng Ubuntu và chưa cài đặt cron, bạn có thể cài đặt bằng APT lần lượt từng lệnh như sau:

  • sudo apt update
  • sudo apt install cron
  • sudo systemctl enable cron

Nếu kết quả trả về trên màn hình của bạn là:

  • Synchronizing state of cron.service with SysV service script with /lib/systemd/systemd-sysv-install.
  • Executing: /lib/systemd/systemd-sysv-install enable cron

Vậy, xin chúc mừng bạn đã thực hiện cài đặt Crontab trên Ubuntu thành công!

Cách sử dụng Crontab

Tiếp nối phần “Crontab hoạt động ra sao?”, chúng ta sẽ có một bảng chứa các giá trị trong công thức để bạn có thể áp dụng được như sau:

Trường dữ liệu Giá trị cho phép sử dụng
phút 0-59
giờ 0-23
Ngày trong tháng 1-31
tháng 1-12 hoặc JAN-DEC
Ngày trong tuần 0-6 hoặc SUN-SAT

Để sử dụng, bạn chỉ cần áp dụng những giá trị trên vào cấu trúc:

Phút – giờ – ngày – trong tháng – tháng – ngày trong tuần – lệnh để chạy

Trong phần hướng dẫn sử dụng Crontab Linux, Trang thủ thuật sẽ lượt phần lệnh để chạy do chúng tôi không biết bạn sẽ sử dụng lệnh nào để thực thi nhé!

Ngoài ra, bạn có thể tham khảo thêm một số ví dụ như sau:

  • * * * * * – Chạy lệnh mỗi phút.
  • 12 * * * * – Chạy lệnh 12 phút sau mỗi giờ.
  • 0,15,30,45 * * * * – Chạy lệnh sau mỗi 15 phút.
  • */15 * * * * – Chạy lệnh sau mỗi 15 phút.
  • 0 4 * * * – Chạy lệnh mỗi ngày vào lúc 4:00 sáng.
  • 0 4 * * 2-4 – Chạy lệnh vào lúc 4:00 sáng Thứ Ba, Thứ Tư và Thứ Năm hàng tuần.
  • 20,40 */8 * 7-12 * – Chạy lệnh vào các phút 20, 40 của giờ thứ 8 hàng ngày của 6 tháng cuối năm từ tháng 7 cho đến hết tháng 12.

Lưu ý: bài viết này được viết vào tháng 12 năm 2022, nếu có thay đổi trong tương lai hoặc bạn không thể áp dụng các lệnh này cho phiên bản Crontab cũ hơn, bạn có thể sử dụng công cụ Trang thủ thuật sẽ “bật mí” cuối bài để kiểm tra nhé!

Quản lý đầu ra công việc của Crontab

Hầu hết tiến trình của Crontab sẽ thực hiện dưới nền. Do đó, nếu muốn kiểm tra lệnh đã thực hiện hay chưa, có lỗi gì xảy ra hay không sẽ là cả một vấn đề với người dùng phổ thông.

Tuy nhiên, chúng ta có thể sử dụng Crontab để báo cáo về việc Crontab làm thông qua email đấy!

Nhưng trước tiên, bạn sẽ cần phải có một email server hoặc dịch vụ mail transfer đã cài đặt sẵn vào trong hosting/ server của bạn.

Sau đó, bạn chỉ cần thêm lệnh:

Cùng các nội dung cần thiết để báo cáo cho bạn biết nhé! Thật quá tiện lợi đúng không nào?

Một số cú pháp đặc biệt trong Crontab

Để công việc đơn giản hơn, viết code dễ dàng hơn, Trang thủ thuật đã tổng hợp một số lệnh viết tắt thay thế cho câu lệnh của Crontab để bạn sử dụng như sau:

Lệnh viết tắt Viết tắt cho lệnh
@hourly 0 * * * *
@daily 0 0 * * *
@weekly 0 0 * * 0
@monthly 0 0 1 * *
@yearly 0 0 1 1 *
@reboot lệnh chạy khi máy chủ khởi động

Cách để tạo lệnh Crontab siêu nhanh

Bạn đang gấp hoặc không thích tìm hiểu nội dung dài dòng và bạn đã “skip” cả đoạn trên để đọc phần này? Vậy, bạn chỉ cần truy cập vào Crontab guru và nhập theo chỉ dẫn là code Crontab đã có sẵn cho bạn copy!

Ví dụ, bạn muốn đặt thời gian là vào lúc 22:00 vào tất cả các ngày trong tuần từ thứ Hai đến thứ Sáu, chúng ta sẽ có code Crontab như sau:

  • 0 22 * * 1-5
crontab-la-gi

Ngoài ra, bạn còn có thể sử dụng Crontab guru để kiểm tra xem lệnh của bạn viết ra đã đúng hay chưa và họ có phần mô tả thông tin phía trên để bạn kiểm chứng. Thật tuyệt vời đúng không nào?

Vậy là chúng ta đã tìm hiểu xong về Crontab là gì cũng như cách để sử dụng Crontab trong Linux/ Ubuntu rồi đấy! Trang thủ thuật hi vọng rằng những kiến thức này sẽ hỗ trợ cho bạn trong công tác quản lý hosting và thực hiện những công việc khác tốt nhất! Chúc bạn thành công!

Bài viết có tham khảo từ: digitalocean, Crontab guru,…

Viết một bình luận