:quality(75)/2024_3_13_638459507383392406_crontab_.jpg)
Tổng quát về Crontab: Cách thức hoạt động, cấu trúc và cách sử dụng Crontab
Crontab là một dịch vụ quan trọng trên hệ điều hành Linux, cho phép người dùng lên lịch và tự động thực hiện các nhiệm vụ theo định kỳ. Sử dụng Crontab một cách hiệu quả có thể giúp tăng cường hiệu suất làm việc của bạn. Hãy cùng tìm hiểu kĩ hơn về Crontab trong bài viết dưới đây nhé!
Bạn không cần cảm thấy chán nản nữa khi phải thực hiện các tác vụ lặp lại trên hệ điều hành Linux hay các bản phân phối khác, vì Crontab sẽ giúp bạn giải quyết vấn đề này một cách dễ dàng.
Tìm hiểu về Crontab
Crontab là gì?
Crontab là một công cụ quản lý lịch trình trên hệ điều hành Linux, cho phép người dùng lên lịch và tự động thực hiện các lệnh hoặc công việc theo chu kỳ xác định. Nó hỗ trợ tự động hóa các tác vụ định kỳ, giảm bớt sự can thiệp thủ công và tối ưu hóa hiệu suất làm việc của người dùng.
Với Crontab, người dùng có thể đặt lịch trình thực thi các lệnh hoặc script vào các thời điểm cụ thể trong ngày, tuần, tháng hoặc năm. Cú pháp của Crontab cho phép người dùng chỉ định các thời điểm thực hiện các tác vụ một cách linh động và chi tiết, như chạy một lệnh mỗi phút, mỗi giờ hay một ngày cụ thể trong tuần.

Bằng cách sử dụng Crontab, người dùng có thể thực hiện nhiều công việc khác nhau như: sao lưu dữ liệu định kỳ, cập nhật hệ thống tự động, chạy các tác vụ quản lý tài khoản người dùng hoặc kiểm tra tình trạng hệ thống.
Cách thức hoạt động của Crontab
Crontab hoạt động dựa trên các tập tin cấu hình text được gọi là cron schedule. Mỗi người dùng trên hệ thống Linux sẽ có một cron schedule riêng của họ, được lưu trữ trong thư mục /var/spool/cron.
Crontab files không cho phép người dùng tạo hoặc chỉnh sửa trực tiếp bằng bất kỳ trình soạn thảo văn bản nào, ngoại trừ việc sử dụng lệnh crontab. Để tạo hoặc chỉnh sửa cron schedule, người dùng thường sử dụng lệnh crontab -e để mở file crontab trong một trình soạn thảo văn bản, sau đó nhập hoặc chỉnh sửa các tác vụ cần thiết và lưu lại.

Các lệnh thường được sử dụng với crontab bao gồm:
- crontab -e: Để tạo hoặc chỉnh sửa file crontab.
- crontab -l: Để hiển thị nội dung của file crontab.
- crontab -r: Để xóa file crontab.
Mặc dù hầu hết các VPS (Virtual Private Server) đều được cài đặt sẵn trình crontab, nhưng vẫn có trường hợp không có sẵn. Nếu bạn gặp lỗi “command not found” khi sử dụng lệnh “crontab -l”, điều này có nghĩa là bạn cần tự cài đặt trình crontab, có thể thực hiện thông qua gói phần mềm của hệ điều hành Linux đang sử dụng.
Để hiểu cách Crontab hoạt động, trước hết chúng ta cần tìm hiểu về cấu trúc của một Crontab.
Một Crontab bao gồm 5 trường xác định thời gian và một trường cuối cùng để chỉ định lệnh cần thực thi theo định kỳ. Cấu trúc này được biểu diễn dưới dạng các trường cách nhau bằng khoảng trắng hoặc tab như sau:

Ví dụ, nếu bạn muốn thực hiện một lệnh vào lúc 00:00 vào ngày 1 và 15 của mỗi tháng, cũng như vào thứ 4, bạn có thể sử dụng lệnh như sau:

Trong đó:
- Phần đầu tiên “0” là phút (00 phút).
- Phần thứ hai “0” là giờ (00 giờ).
- Phần thứ ba “1,15” là ngày trong tháng (ngày 1 và 15).
- Phần thứ tư “*” là tháng (mọi tháng).
- Phần thứ năm “3” là ngày trong tuần (thứ 4).
- Phần thứ sáu “command” là lệnh cần thực thi.
Crontab sẽ thực hiện lệnh này vào lúc 00:00 vào ngày 1 và 15 của mỗi tháng, cũng như vào thứ 4.
Một số ứng dụng của Crontab
Crontab có thể được ứng dụng trong nhiều công việc khác nhau, giúp tự động hóa các tác vụ và tối ưu hóa hiệu suất làm việc. Dưới đây là một số ứng dụng phổ biến của Crontab:
- Lên lịch task công việc: Crontab cho phép người dùng lên lịch các task công việc để thực hiện vào các thời điểm cụ thể trong ngày, tuần, tháng hoặc năm. Điều này giúp tự động thực hiện các nhiệm vụ như sao lưu dữ liệu, quét virus hoặc thực hiện các quy trình tự động.
- Cập nhật và chạy chương trình: Crontab có thể được sử dụng để cập nhật và chạy các chương trình, hay script vào các thời điểm cụ thể. Dịch vụ cron sẽ kiểm tra các file trong các thư mục như /var/spool/cron, /etc/cron.d và /etc/anacrontab để xác định các công việc cần thực hiện.
- Quản lý hệ thống và tài khoản người dùng: Crontab có thể được sử dụng để thực hiện các nhiệm vụ quản lý hệ thống như cập nhật phần mềm, quét log, và kiểm tra sức khỏe hệ thống. Nó cũng có thể được sử dụng để quản lý tài khoản người dùng bằng cách tự động hóa các tác vụ như tạo, vô hiệu hóa hoặc xóa tài khoản.
- Thực hiện các quy trình định kỳ: Crontab cho phép thực hiện các quy trình định kỳ như gửi email hàng ngày, tạo bản sao dự phòng định kỳ, hoặc thực hiện các tác vụ kiểm tra bảo mật định kỳ.

Hướng dẫn cài đặt Crontab Linux
Để có thể cài đặt Crontab, bạn cần đáp ứng các yêu cầu tối thiểu sau:
- Sử dụng hệ điều hành Ubuntu phiên bản 18.04 trở lên. Hệ thống có thể là máy tính cá nhân, máy ảo hoặc máy chủ.
- Bạn cần đăng nhập vào hệ thống với quyền root, hoặc quyền quản trị viên cao cấp để có thể tạo và chỉnh sửa các tác vụ trong Crontab.
Hầu hết các bản phân phối của Linux đều đi kèm với cron được cài đặt sẵn theo mặc định. Tuy nhiên, trong trường hợp bạn sử dụng Ubuntu và cron chưa được cài đặt, bạn có thể thực hiện việc cài đặt bằng APT bằng các lệnh sau:
- Cập nhật danh sách các gói phần mềm: sudo apt update
- Cài đặt gói cron: sudo apt install cron
- Kích hoạt dịch vụ cron: sudo systemctl enable cron
Sau khi thực hiện các bước trên, nếu bạn nhận được thông báo như sau trên màn hình:
Synchronizing state of cron.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable cron

Tức là bạn đã cài đặt Crontab trên Ubuntu thành công. Bây giờ bạn có thể sử dụng lệnh crontab -e để tạo hoặc chỉnh sửa file Crontab của mình và bắt đầu lên lịch các tác vụ theo định kỳ một cách dễ dàng.
Hướng dẫn sử dụng Crontab Linux
Cron hoạt động dựa trên các lệnh đã được chỉ định trong bảng cron (hay còn gọi là crontab). Mỗi người dùng, bao gồm cả root, đều có thể có một file crontab riêng. Mặc định các file này không tồn tại, nhưng chúng ta có thể tạo chúng trong thư mục /var/spool/cron bằng cách sử dụng lệnh crontab -e.
Ngoài ra, lệnh này cũng được sử dụng để chỉnh sửa file crontab. Vì vậy, bạn không nên sử dụng các trình soạn thảo văn bản tiêu chuẩn như Vi, Vim, Emacs, Nano,... Bởi lẽ, việc sử dụng lệnh crontab không chỉ cho phép bạn chỉnh sửa các lệnh, mà còn khởi động lại cron daemon khi bạn lưu và thoát khỏi trình soạn thảo. Lệnh crontab sử dụng Vi làm trình soạn thảo mặc định vì Vi luôn sẵn có.
Các file crontab thường là trống, do đó các lệnh cần được thêm vào từ đầu. Ví dụ sau đây minh họa về các công việc trong file crontab:

Ba dòng đầu tiên thiết lập một môi trường mặc định. Môi trường này phải được thiết lập phù hợp với nhu cầu của người dùng, vì cron không cung cấp môi trường cụ thể. Biến SHELL xác định shell sẽ được sử dụng khi thực thi các lệnh. Trong ví dụ này, shell Bash được sử dụng. Biến MAILTO xác định địa chỉ email nhận kết quả của các cron job. Email này có thể cung cấp trạng thái của các công việc cron (backup, cập nhật,...) và cũng bao gồm đầu ra mà người dùng muốn khi chạy chương trình từ dòng lệnh. Dòng thứ ba thiết lập PATH cho môi trường.
Về biến MAILTO, đây là địa chỉ email để nhận kết quả của một cron job. Email này có thể cung cấp trạng thái của các công việc cron (backup, cập nhật,...) cùng với đầu ra mà người dùng muốn khi chạy chương trình từ dòng lệnh. Dòng thứ ba thiết lập PATH cho môi trường.

Các dòng lệnh trong file crontab chi tiết như sau:
- Dòng lệnh 01 01 * * * /usr/local/bin/rsbu -vbd1 ; /usr/local/bin/rsbu -vbd2 trong tệp /etc/crontab sẽ thực hiện chạy một script và tiến hành sao lưu hệ thống. Lệnh này sẽ chạy script trong shell Bash, rsbu, và sao lưu hệ thống vào lúc 1:01 sáng hàng ngày. Dấu * ở vị trí 3, 4 và 5 của phần thời gian cũng tương đương với các ký tự đại diện cho mọi giá trị, giống như glob hoặc wildcard. Chúng được sử dụng để phân chia thời gian theo tuần, tháng hoặc năm.
- Dòng lệnh này sẽ sao lưu hệ thống hai lần: lần thứ nhất vào một ổ cứng chuyên dụng và lần thứ hai vào một USB drive bên ngoài.
- Dòng lệnh này cũng đặt thời gian của phần cứng trên máy tính bằng cách sử dụng thời gian của hệ thống làm gốc. Dòng này được thiết lập để chạy vào lúc 5:03 sáng mỗi ngày với lệnh /sbin/hwclock --systohc.
- Dòng # 25 04 1 * * /usr/bin/dnf -y update có thể được sử dụng để cập nhật dnf hoặc yum vào lúc 4:25 sáng cho ngày đầu tiên của mỗi tháng. Tuy nhiên, dòng này đã được chuyển thành một comment như ví dụ trước đó, vì vậy nó sẽ không được thực thi.

Cách lên lịch với Crontab Linux
Để lên lịch các công việc sử dụng Crontab trong Linux, bạn có thể sử dụng các biểu thức thời gian để xác định thời điểm mà công việc sẽ được thực hiện.
Chạy công việc vào thời điểm cụ thể hàng tuần:
00 15 * * Thu /usr/local/bin/mycronjob.sh.
Nó sẽ chạy tập lệnh mycronjob.sh vào lúc 3 giờ chiều mỗi thứ Năm.
Chạy công việc vào ngày đầu tiên của mỗi quý:
02 03 1 1,4,7,10 * /usr/local/bin/reports.sh.
Câu lệnh này sẽ chạy script reports.sh vào ngày đầu tiên của mỗi quý (tháng 1, 4, 7, 10).

Chạy công việc vào mỗi giờ từ 9:01 sáng đến 5:01 chiều từ thứ Hai đến thứ Sáu:
01 09-17 * * 1-5 /usr/local/bin/hourlyreminder.sh.
Lệnh sẽ cho phép công việc chạy vào mỗi phút từ 9:01 sáng đến 5:01 chiều, từ thứ Hai đến thứ Sáu.
Chạy công việc sau mỗi khoảng thời gian cố định:
*/3 * * * * /usr/local/bin/somejob.sh.
Câu lệnh này sẽ chạy công việc somejob.sh mỗi ba phút.
6-18/3 * * * * /usr/local/bin/otherjob.sh.
Crontab sẽ chạy công việc otherjob.sh mỗi ba giờ từ 6 giờ sáng đến 6 giờ chiều.

Nhớ rằng, các biểu thức chia cần phải cho ra kết quả với phần dư là 0 để đảm bảo rằng công việc được thực thi đúng lịch trình mong muốn.
Một số cú pháp đặc biệt trong Crontab
Trong Crontab, có một số cú pháp đặc biệt được sử dụng để viết tắt cho các lịch trình thường gặp. Dưới đây là một số cú pháp đặc biệt và cách chúng được sử dụng:
|
Cú pháp |
Tương đương |
Mô tả |
|
@hourly |
0 * * * * |
Chạy mỗi giờ đồng hồ. |
|
@daily |
0 0 * * * |
Chạy mỗi ngày vào lúc 00:00. |
|
@weekly |
0 0 * * 0 |
Chạy mỗi tuần vào lúc 00:00 vào Chủ Nhật. |
|
@monthly |
0 0 1 * * |
Chạy mỗi tháng vào lúc 00:00 vào ngày đầu tiên. |
|
@yearly |
0 0 1 1 * |
Chạy mỗi năm vào lúc 00:00 vào ngày đầu tiên năm. |
|
@reboot |
- |
Chạy mỗi khi hệ thống khởi động lại. |
Việc sử dụng các cú pháp viết tắt này giúp giảm bớt sự phức tạp, làm cho việc viết lịch trình trong Crontab trở nên đơn giản và dễ hiểu hơn.
Tạm kết
Trên đây là tất cả thông tin về Crontab mà FPT Shop đã chia sẻ. Hy vọng rằng sau khi đọc bài viết này bạn đã có thể nắm vững kiến thức về Crontab, và việc thực hiện các công việc sẽ trở nên dễ dàng hơn đối với bạn. Chúc bạn thành công!
Ngoài ra, bạn có thể tham khảo website của FPT Shop nếu có nhu cầu mua sắm các sản phẩm công nghệ cao như điện thoại, máy tính bảng, PC,… hay đồ gia dụng cho gia đình. Bài viết xin đề xuất tới bạn danh sách các sản phẩm laptop bán chạy nhất hiện nay của cửa hàng:
Xem thêm:
cURL là gì? Cách sử dụng cURL và các lệnh cURL cơ bản cần biết trong Linux
Flutter là gì? Giải đáp lí do tại sao bạn nên dùng Flutter để phát triển ứng dụng
:quality(75)/estore-v2/img/fptshop-logo.png)