[2024] Crontab là gì? | Hướng dẫn Cài đặt & Sử dụng Crontab

Crontab là gì? Crontab là một công cụ được sử dụng để lên lịch cho các nhiệm vụ hoặc tác vụ tự động trên hệ điều hành UNIX và các biến thể của nó. Bằng cách sử dụng Crontab, người dùng có thể tự động hóa các công việc theo một lịch trình cụ thể, cải thiện hiệu suất làm việc một cách đáng kể. Tất cả những thông tin cần thiết để sử dụng Crontab Linux sẽ được giải thích chi tiết trong bài viết dưới đây của VinaHost.

1. Crontab là gì?

Crontab là một công cụ giúp tạo và thực thi các lệnh theo chu kỳ nhất định. Nó cho phép người dùng lập lịch để thực hiện các tác vụ trên máy chủ, chạy một hoặc nhiều lệnh theo thời gian được xác định trước. 

crontab la gi
Crontab là một công cụ giúp tạo và thực thi các lệnh theo chu kỳ nhất định

Xem thêm: Linux là gì | Tổng hợp kiến thức [A-Z] hệ điều hành Linux

2. Crontab hoạt động như thế nào?

Cron schedule đơn giản chỉ là một tệp văn bản. Mỗi người dùng sẽ có một cron schedule riêng, và tệp này thường được lưu trữ tại đường dẫn /var/spool/cron. Bạn không được phép tạo hoặc chỉnh sửa trực tiếp tệp crontab bằng bất kỳ trình soạn thảo văn bản nào, trừ khi sử dụng lệnh crontab.

Các lệnh phổ biến bao gồm:

– crontab -e: tạo hoặc chỉnh sửa tệp crontab

– crontab -l: hiển thị nội dung của tệp crontab

– crontab -r: xóa tệp crontab

Hầu hết các máy chủ ảo (VPS) đều được cài đặt sẵn crontab, tuy nhiên có thể có trường hợp ngoại lệ. Nếu bạn sử dụng lệnh crontab -l và nhận thông báo trả về -bash: crontab: command not found, điều này có nghĩa là bạn cần tự cài đặt thủ công.

3. Cấu trúc của Crontab

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

crontab la gi
Cấu trúc của Crontab

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

0 0 1,15 ** * /vinahost.vn/backup

Lệnh này có ý nghĩa là backup được thực hiện vào lúc 00:00 ngày 1 và 15 của mỗi tháng.

4. Điều kiện sử dụng

Để sử dụng công cụ này, bạn cần thỏa mãn các yêu cầu tối thiểu sau đây:

  • Hệ điều hành Ubuntu từ phiên bản 18.04 trở lên, có thể là máy tính cá nhân của bạn, máy ảo hoặc máy chủ.
  • Người dùng có quyền root hoặc quản trị viên có đặc quyền cao.

5. Hướng dẫn cách cài đặt Crontab chi tiết

Nếu bạn đang sử dụng Ubuntu và chưa có cron được cài đặt, bạn có thể dùng APT để cài đặt bằng cách sử dụng lần lượt các lệ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 như bên dưới thì bạn đã cài đặt Crontab trên Ubuntu thành công. 

Synchronizing state of cron.service with SysV service script with /lib/systemd/systemd-sysv-install.

Executing: /lib/systemd/systemd-sysv-install enable cron

Xem thêm: [Tổng Hợp] Các câu lệnh trong Linux mà bạn nên biết

6. Hướng dẫn cách sử dụng Crontab chi tiết

Dưới đây là hướng dẫn cách sử dụng công cụ này chi tiết trên hệ điều hành Linux:

Xem danh sách công việc Crontab hiện tại:

crontab -l

Lệnh này sẽ hiển thị danh sách các công việc đã được lập lịch trong Crontab.

Tạo hoặc chỉnh sửa công việc Crontab:

crontab -e

Lệnh này mở một trình soạn thảo văn bản để tạo hoặc chỉnh sửa công việc Crontab. Công việc mới được thêm vào sẽ được lưu lại sau khi bạn đóng trình soạn thảo.

Xóa công việc Crontab:

crontab -r

Lệnh này sẽ xóa toàn bộ công việc được lập lịch trong Crontab.

Các ví dụ thực tế

30 22 * * * /bin/echo “Hello World”

Chạy lệnh /bin/echo “Hello World” mỗi ngày vào lúc 10:30 PM

0 2 1 * * /path/to/script.sh

Chạy một script được đặt tại /path/to/script.sh vào ngày đầu tiên của mỗi tháng lúc 2:00 AM

Lưu ý: Khi sử dụng công cụ này, hãy chắc chắn rằng bạn đã kiểm tra kết quả của các công việc và xác định chúng hoạt động đúng như mong đợi.

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

  • * * * * * – Thực thi lệnh mỗi phút.
  • 12 * * * * – Thực thi lệnh 12 phút sau mỗi giờ.
  • 0,15,30,45 * * * * – Thực thi lệnh sau mỗi 15 phút.
  • */15 * * * * – Thực thi lệnh sau mỗi 15 phút.
  • 0 4 * * * – Thực thi lệnh mỗi ngày vào lúc 4:00 sáng.
  • 0 4 * * 2-4 – Thực thi 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 * – Thực thi lệnh vào các phút 20, 40 của giờ thứ 8 hàng ngày từ tháng 7 đến tháng 12 trong năm.

Xem thêm: Arch Linux là gì? | Cách Cài đặt & Cấu hình Arch Linux A-Z

7. Các ứng dụng phổ biến của Crontab

Công cụ này có thể được áp dụng cho nhiều loại công việc khác nhau. Cụ thể, dưới đây là một số ứng dụng phổ biến của cron:

  • Lập lịch công việc: Cron có thể được sử dụng để lên lịch các nhiệm vụ hoạt động trong hệ thống, đồng bộ hóa với giờ hệ thống của máy tính sử dụng Network Time Protocol (NTP), từ đó hỗ trợ người dùng cài đặt thời gian phần cứng dựa trên thời gian hệ thống.
  • Cập nhật và thực thi chương trình: Dịch vụ cron sẽ kiểm tra các tệp tin trong các thư mục như /var/spool/cron, /etc/cron.d và cả tệp /etc/anacrontab. Những tệp tin này chứa các nhiệm vụ cần được cron thực thi theo lịch trình đã được định sẵn.
  • Tự động sao lưu dữ liệu: Cron có thể được sử dụng để tự động sao lưu dữ liệu, cung cấp khả năng đảm bảo an toàn cho thông tin quan trọng trên hệ thống.
  • Gửi báo cáo tự động: Cron còn được dùng để thực hiện các tác vụ tự động như gửi báo cáo qua email, thông báo trạng thái hệ thống, hoặc ghi nhật ký hệ thống.

Công cụ này cung cấp một giải pháp linh hoạt để tự động hóa các tác vụ hệ thống và quản lý thời gian hoạt động của chúng.

crontab la gi
Công cụ này có thể được áp dụng cho nhiều loại công việc khác nhau.

8. Quản lý công việc của Crontab

Hầu hết các tác vụ trong Crontab thường được thực hiện ẩn danh. Do đó, việc kiểm tra xem các lệnh đã thực hiện thành công hay chưa, có xảy ra lỗi hay không, là một thách thức đối với người dùng không chuyên nghiệp.

Tuy nhiên, có một phương pháp để nhận thông báo về các hoạt động của công cụ này qua email. Để làm điều này, trước tiên, bạn cần cấu hình một máy chủ email hoặc dịch vụ chuyển thư đã được tích hợp sẵn trong hệ thống hosting/server của bạn.

9. Các cú pháp đặc biệt trong Crontab nên nhớ

Dưới đây là một số câu lệnh viết tắt của công cụ này.

Lệnh viết tắtViết tắt cho lệnh
@hourly0****
@daily 00***
@weekly00**0
@monthly001**
@yearly0011*
@rebootLệnh chạy khi máy chủ khởi động

10. Hướng dẫn tạo lệnh Crontab nhanh với Crontab guru

Thêm vào đó, bạn có thể truy cập Crontab guru và làm theo hướng dẫn để nhận ngay mã Crontab đã được tạo sẵn. Bạn chỉ cần sao chép để tạo lệnh.

Ví dụ, nếu bạn muốn lập lịch để thực hiện một công việc vào lúc 22:00 hàng ngày từ thứ Hai đến thứ Sáu, bạn có thể sử dụng mã Crontab sau:

0 22 * * 1-5

Nhìn chung, Crontab guru là một công cụ hữu ích giúp bạn kiểm tra tính chính xác của lệnh Crontab.

11. Những mẹo trong việc lên lịch với Crontab Linux

Trước hết, giả sử bạn muốn thực hiện một công việc vào lúc 3 giờ chiều, hàng tuần vào thứ Ba:

00 15 * * 2 /usr/local/bin/mycronjob.sh

Câu lệnh này sẽ thực hiện file mycronjob.sh vào lúc 3 giờ chiều hàng tuần vào thứ Ba.

 

Hoặc bạn cũng có thể sử dụng để chạy các báo cáo theo từng quý, kết thúc vào ngày cuối cùng của quý. Mặc dù cron không có tùy chọn cho ngày cuối cùng của tháng, bạn có thể sử dụng ngày đầu tiên của tháng tiếp theo, như sau:

02 03 1 1,4,7,10 * /usr/local/bin/reports.sh

Cron job này sẽ thực hiện file reports.sh vào ngày đầu tiên của mỗi quý.

 

Dưới đây là một ví dụ khác, để thực hiện một công việc trong mỗi phút từ 9:01 sáng đến 5:01 chiều hàng ngày:

01 09-17 * * * /usr/local/bin/hourlyreminder.sh

Câu lệnh này sẽ thực hiện file hourlyreminder.sh mỗi phút, từ 9:01 sáng đến 5:01 chiều hàng ngày.

 

Đôi khi, có những công việc cần được thực hiện sau mỗi 2, 3 hoặc 4 giờ. Trong trường hợp đó, ta có thể sử dụng phép chia số giờ mong muốn. Ví dụ, */3 tương đương với công việc được thực hiện sau mỗi ba giờ. Hoặc 6-18/3 để thực hiện công việc mỗi ba giờ, từ 6 giờ sáng đến 6 giờ chiều. Các khoảng thời gian khác cũng có thể được chia tương tự. Ví dụ, biểu thức */15 ở trường phút có nghĩa là thực hiện công việc sau mỗi 15 phút.

*/5 08-18/2 * * * /usr/local/bin/mycronjob.sh

 

Cần lưu ý rằng các biểu thức chia phải cho ra kết quả có số dư là 0, khi đó công việc mới có thể được thực hiện. Do đó, trong ví dụ này, công việc được lập lịch để chạy mỗi năm phút một lần (08:05, 08:10, 08:15,…) trong các giờ chẵn từ 8 giờ sáng đến 6 giờ chiều, nhưng không chạy trong các giờ lẻ. Ví dụ, công việc sẽ không được thực hiện từ 9 giờ tối đến 9 giờ 59 phút sáng.

12. Giới hạn việc truy cập Cron trong Crontab Linux

Sử dụng cron một cách thường xuyên có thể gây ra một số vấn đề, như việc sử dụng tài nguyên hệ thống (bộ nhớ, CPU…) quá mức cho phép. Vì vậy, bạn có thể thiết lập giới hạn truy cập của người dùng để hạn chế các vấn đề này xảy ra. Cụ thể, bạn có thể tạo một tệp /etc/cron.allow, chứa danh sách các người dùng được phép tạo cron job. Tuy nhiên, người dùng root không thể bị hạn chế sử dụng cron.

04 07 * * * student /usr/local/bin/mycronjob.sh

Nếu không có người dùng được chỉ định, công việc sẽ chạy dưới tên người dùng sở hữu file crontab. Trong trường hợp này, người dùng sở hữu là root.

12.1. Cron.d

Thư mục /etc/cron.d là nơi chứa các ứng dụng như SpamAssassin, sysstat và các tệp cài đặt cron. Với SpamAssassin và sysstat không có người dùng riêng, các chương trình này cần một vị trí để đặt các tệp cron. Vì vậy, chúng được đặt trong /etc/cron.d.

Tệp /etc/cron.d/sysstat chứa các công việc cron liên quan đến báo cáo hoạt động hệ thống (SAR). Các tệp cron này có định dạng tương tự như các tệp cron của người dùng.

# Run system activity accounting tool every 10 minutes

*/10 * * * * root /usr/lib64/sa/sa1 1 1

# Generate a daily summary of process accounting at 23:53

53 23 * * * root /usr/lib64/sa/sa2 -A

Tệp cron sysstat bao gồm hai dòng lệnh để thực hiện các nhiệm vụ. Dòng đầu tiên chạy lệnh sa1 mỗi 10 phút để thu thập dữ liệu trong các tệp nhị phân đặc biệt, được đặt trong thư mục /var/log/sa. Sau đó, mỗi tối vào lúc 23:53, chương trình sa2 sẽ chạy để tạo một bản tóm tắt hàng ngày.

crontab la gi
Giới hạn việc truy cập Cron trong Crontab Linux

12.2. Anacron

Chương trình anacron thực hiện các chức năng tương tự như crond. Tuy nhiên, nó có khả năng chạy các công việc đã bị bỏ qua, như khi máy tính đã tắt hoặc không thể thực hiện các công việc trong một khoảng thời gian nhất định. Công cụ này rất hữu ích với người dùng laptop hoặc các máy tính thường xuyên được đưa vào chế độ sleep.

Ngay sau khi máy tính được khởi động, anacron sẽ kiểm tra xem các công việc đã được cấu hình có bị bỏ lỡ lịch chạy nào không. Nếu có, các công việc này sẽ được thực hiện ngay lập tức. Tuy nhiên, các công việc chỉ được chạy một lần, bất kể đã bị bỏ lỡ lịch chạy bao nhiêu lần.

Bên cạnh đó, chương trình anacron cung cấp một số tùy chọn để thực hiện các nhiệm vụ được lên lịch thường xuyên. Chỉ cần cài đặt các tập lệnh vào trong thư mục /etc/cron.[hourly|daily|weekly|monthly], phụ thuộc vào tần suất mà ta muốn các công việc chạy.

Cách hoạt động của anacron:

Dịch vụ crond chạy các cron job được chỉ định trong /etc/cron.d/0hourly.

# Chạy các công việc hàng giờ

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

01 * * * * root run-parts /etc/cron.hourly

Công việc cron được chỉ định trong /etc/cron.d/0hourly chạy chương trình run-parts mỗi giờ một lần.

Chương trình run-parts sẽ thực thi tất cả các tập lệnh có trong thư mục /etc/cron.hourly.

Thư mục /etc/cron.hourly chứa tập lệnh 0anacron, tập lệnh này sẽ thực thi chương trình anacron bằng cấu hình file /etc/anacrontab dưới đây:

# /etc/anacrontab: configuration file for anacron

SHELL=/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

# the maximal random delay added to the base delay of the jobs

RANDOM_DELAY=45

# the jobs will be started during the following hours only

START_HOURS_RANGE=3-22                                                        

#period in days   delay in minutes   job-identifier   command

1       5       cron.daily              nice run-parts /etc/cron.daily

7       25      cron.weekly             nice run-parts /etc/cron.weekly

@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly

Cuối cùng, chương trình anacron thực hiện các tác vụ trong /etc/cron.daily hàng ngày, trong /etc/cron.weekly hàng tuần và trong cron.monthly mỗi tháng. Chú ý rằng các khoảng thời gian khác nhau trong mỗi dòng giúp tránh việc các tác vụ này trùng lặp.

Thay vì đặt các tập lệnh Bash đầy đủ trong thư mục cron.X, chúng ta có thể cài đặt chúng trong /usr/local/bin. Điều này giúp cho việc chạy chúng hàng ngày từ dòng lệnh trở nên dễ dàng.

Anacron không được thiết kế để thực hiện các tác vụ vào các thời điểm cụ thể, mà thay vào đó nó thực hiện chúng vào các khoảng thời gian nhất định, với thời gian bắt đầu xác định. Ví dụ, mỗi ngày vào lúc 3 giờ sáng, vào Chủ nhật, hoặc vào ngày đầu tiên của mỗi tháng. Trong trường hợp có bất kỳ chu kỳ nào bị bỏ qua, anacron sẽ thực hiện các tác vụ bị bỏ lỡ đó một lần.

12.3. Shortcut trong Crontab Linux

Tệp /etc/anacrontab cung cấp cho chúng ta cái nhìn về cách sử dụng các phím tắt để chỉ định một số thời gian phổ biến. Các phím tắt này có thể thay thế cho 5 trường thường được sử dụng để chỉ định thời gian. Ký tự @ được sử dụng để xác định phím tắt cho cron. 

Dưới đây là danh sách một số phím tắt và ý nghĩa của chúng:

@reboot: Chạy sau khi khởi động lại.

@yearly: Chạy hàng năm, ví dụ: 0 0 1 1 *

@annually: Chạy hàng năm, ví dụ: 0 0 1 1 *

@monthly: Chạy hàng tháng, ví dụ: 0 0 1 * *

@weekly: Chạy hàng tuần, ví dụ: 0 0 * * 0

@daily: Chạy hàng ngày, ví dụ: 0 0 * * *

@hourly: Chạy mỗi giờ, ví dụ: 0 * * * *

Các phím tắt này có thể được sử dụng trong nhiều tệp crontab Linux khác nhau, bao gồm cả trong /etc/cron.d.

13. Câu hỏi thường gặp về Crontab Linux

13.1. Khi nào nên Restart Crontab?

Có một số tình huống mà việc Restart crontab là cần thiết, bao gồm:

  • Hệ thống không nhận biết các thay đổi mới.
  • Phiên bản đã cũ hoặc gặp phải các vấn đề cụ thể.
  • Xử lý lỗi hoặc khắc phục tình trạng không chính xác.

13.2. Những Crontab online tốt nhất hiện nay?

Hiện nay, có một số dịch vụ crontab trực tuyến tốt có thể bạn quan tâm:

  • Cronitor: Đây là một dịch vụ quản lý tác vụ crontab được thiết kế để giúp theo dõi và quản lý các tác vụ crontab của bạn một cách hiệu quả.
  • Cronless: Dịch vụ này cung cấp giao diện thân thiện và dễ sử dụng, cho phép bạn lên lịch các tác vụ crontab một cách linh hoạt và thuận tiện.
  • Cron-job.org: Là một dịch vụ crontab trực tuyến miễn phí, cho phép bạn lên lịch các tác vụ theo thời gian cụ thể.
  • EasyCron: Dịch vụ này cung cấp các tính năng mở rộng như lịch trình phức tạp, cảnh báo qua email và quản lý tác vụ crontab một cách dễ dàng.
  • SetCronJob: Là một dịch vụ crontab trực tuyến đơn giản, cho phép bạn lên lịch các tác vụ theo thời gian cụ thể với giao diện dễ sử dụng.
crontab la gi
Những Crontab online tốt nhất

Lưu ý rằng việc lựa chọn dịch vụ crontab phụ thuộc vào nhu cầu cụ thể của bạn, bao gồm tính linh hoạt, tính năng bổ sung, và yêu cầu của dự án hoặc ứng dụng của bạn.

13.3. Edit Crontab là gì?

Chỉnh sửa Crontab là quá trình sửa đổi tệp Crontab của bạn. Tệp Crontab là một tệp văn bản chứa các mục nhập cron, mỗi mục nhập xác định một tác vụ được lên lịch chạy theo một lịch trình cụ thể.

Để thực hiện chỉnh sửa Crontab, bạn có thể sử dụng lệnh crontab -e. Lệnh này sẽ mở tệp Crontab của bạn trong trình soạn thảo văn bản mặc định của bạn. Sau khi hoàn thành việc chỉnh sửa, hãy lưu và đóng trình soạn thảo.

14. Tổng kết

Chúng ta đã hoàn thành việc tìm hiểu về Crontab là gì và cách sử dụng Crontab trong Linux/Ubuntu. VinaHost hy vọng rằng những thông tin này sẽ giúp ích cho bạn trong việc quản lý hosting và thực hiện các nhiệm vụ khác một cách tốt nhất. Bạn có thể tìm hiểu thêm về các chủ đề khác bằng cách truy cập vào Blog của VinaHost TẠI ĐÂY hoặc liên hệ ngay cho chúng tôi nếu cần tư vấn về dịch vụ:

Xem thêm một số bài viết khác:

[Tìm Hiểu] CentOS là gì? | Tổng hợp kiến thức về hệ điều hành CentOS

Fedora là gì? | Hướng dẫn Cài đặt & Cấu hình Fedora A-Z

IPtables là gì? | Hướng dẫn thiết lập & sử dụng IPtables

Unix là gì? | Tổng hợp kiến thức [A-Z] về hệ điều hành Unix

Đánh giá
5/5 - (6 bình chọn)
Đăng ký nhận tin

Để không bỏ sót bất kỳ tin tức hoặc chương trình khuyến mãi từ Vinahost

    Bài viết liên quan
    Bình luận
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Phản hồi nội tuyến
    Xem tất cả bình luận
    Tổng lượt truy cập: lượt xem