Crontab là gì? Cách cài đặt & sử dụng Crontab Linux từ A – Z

Crontab là gì? Cách cài đặt & sử dụng Crontab Linux từ A – Z

Tác giả: admin@
15:01 18/01/2022

Crontab được biết đến là một loại dịch vụ giúp cho người dùng có thể thực hiện được những task đã được lên lịch sẵn. Chúng sẽ giúp bạn cải thiện một cách đáng kể hiệu suất khi làm việc. Vậy, để sử dụng Crontab Linux một cách hiệu quả phải làm như thế nào? Tất cả những thông tin mà bạn đang tìm hiểu đều sẽ được bật mí ngay sau đây một cách chi tiết nhất. 

Crontab là gì?

Crontab chính là một cách để tạo và thực hiện chạy các lệnh dựa theo một chu kỳ xác định nào đó. Đây là một tiện ích giúp cho người dùng lập lịch trình với mục đích chạy các dòng lệnh từ phía server để nhằm thực thi một hoặc nhiều hơn các công việc theo một khung thời gian đã được thiết lập sẵn. 

Cách thức hoạt động của Crontab

Về cách thức hoạt động, một cron schedule đơn giản chính là một text file. Mỗi một người dùng đều sẽ có cho mình một cron schedule riêng. File này thường sẽ nằm ở vị trí  /var/spool/cron. Ngoài ra, Crontab files sẽ không cho phép người dùng tạo hoặc thực hiện chỉnh sửa trực tiếp đối với bất cứ trình text editor nào. Ngoại trừ việc bạn sử dụng lệnh crontab.

Một số lệnh crontab mà bạn thường dùng như sau:

  • crontab -e: Đây là lệnh tạo hoặc chỉnh sửa file crontab 
  • crontab -l: Đây là lệnh hiển thị file crontab 
  • crontab -r: Đây là lệnh xóa file crontab

Hầu hết các VPS đều sẽ được cài sẵn ở trình crontab. Tuy nhiên, vẫn sẽ có những trường hợp cụ thể mà VPS không có. Nếu bạn sử dụng lệnh “crontab -1” mà nhìn thấy output trả lại là -bash: crontab: command not found, điều này có nghĩa là bạn cần phải tự thực hiện việc cài đặt thủ công. 

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

Trong trường hợp VPS của bạn không có sẵn crontab thì bạn cần phải tiến hành cài đặt thủ công. Vì vậy, bạn cần phải nắm bắt được từng bước thực hiện cụ thể và chính xác thì quá trình cài đặt mới thành công. Cụ thể, những bước cài đặt cron linux như sau:

Đầu tiên, bạn sử dụng lệnh:

  • yum install cronie

Sau khi cài lệnh này, hệ thống sẽ bắt đầu crontab và tự động chạy mỗi khi bạn reboot.

  • service crond start 
  • chkconfig crond on

>> Có thể bạn quan tâm: Pentest là gì? Tìm hiểu về Penetration Testing từ A đến Z

Super deal 032023

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

Cron sẽ hoạt động dựa trên những lệnh đã được chỉ định ở trong cron table (tức crontab). Mỗi một người dùng và kể cả root đều sẽ có thể có một file cron. Những file này dựa theo mặc định thì đều sẽ không tồn tại. Tuy nhiên, chúng ta có thể tạo ra chúng ở trong thư mục /var/spool/cron thông qua việc sử dụng lệnh crontab -e. 

Bên cạnh đó, lệnh này cũng sẽ được sử dụng với mục đích chỉnh sửa file cron. Vì vậy, bạn không nên sử dụng những trình editor tiêu chuẩn (ví dụ như Vi, Vim, Emacs, Nano,...). Bởi lẽ, việc sử dụng lệnh crontab sẽ không chỉ cho phép bạn cho phép thực hiện chỉnh sửa các lệnh. Chúng còn khởi động lại cron daemon khi chúng ta thực hiện lưu và thoát ra khỏi trình editor. Lệnh crontab sẽ sử dụng Vi để làm editor cơ bản bởi vì Vi luôn luôn rất khả dụng. 

Những file cron sẽ trống, vì vậy các lệnh này cần phải được thêm ngay từ đầu. Một ví dụ điển hình định nghĩa về những công việc ở trong file cron:

Ba dòng đầu tiên với nhiệm vụ chính là thiết lập nên một môi trường mặc định. Môi trường cần phải được thiết lập thật phù hợp dựa trên nhu cầu của người dùng. Chính vì vậy, cron sẽ không cung cấp cho bạn một môi trường cụ thể nào hết. Với biến SHELL, biến này sẽ thực hiện chỉ định shell để sử dụng khi mà những câu lệnh được thực thi. Ở hình ảnh ví dụ trên, shell Bash được chỉ định. 

Đối với biến MAILTO sẽ đặt địa chỉ mail để nhận các kết quả của một cron job. Những mail này có thể cung cấp cho bạn một trạng thái của những cron job (backup, update,..). Bên cạnh đó, chúng còn bao gồm cả output mà những người dùng muốn khi thực hiện chạy chương trình thủ công đến từ cmd. Ở dòng thứ ba có nhiệm vụ được thiết lập PATH cho môi trường. 

Chi tiết các dòng lệnh

Nhìn chung, có khá nhiều những dòng comment được đưa ra ở ví dụ trên. Chúng trình bày một cách chi tiết những cú pháp cần thiết nhằm mục đích xác định một cron job. Thông tin cụ thể của từng dòng lệnh như sau:

  • 01 01 * * * /usr/local/bin/rsbu -vbd1 ; /usr/local/bin/rsbu -vbd2: Dòng lệnh này ở trong thư mục /etc/crontab sẽ chạy một script và thực hiện backup hệ thống. 

Dòng lệnh này sẽ thực hiện chạy script ở trong shell Bash, rsbu và có nhiệm vụ backup những hệ thống vào lúc 1:01 sáng hàng ngày. Dấu * được đặt ở vị trí 3, 4 và 5 của phần thời gian cũng sẽ tương tự như những file glob hoặc wildcard. Chúng được dùng cho những phân chia thời gian khác. 

Cụ thể như sau, chúng sẽ thời gian nhất định trong tuần, trong tháng hay trong năm. Dòng này sẽ tiến hành backup hai lần. Mỗi một lần backup vào ổ cứng chuyên dụng. Và lần thứ hai, hệ thống sẽ tiến hành backup vào trong một USB drvie ở ngoài. 

Tiếp đó, dòng lệnh này cũng sẽ đặt thời gian cho phần cứng ở trên máy tính thông qua việc sử dụng thời gian của hệ thống để làm gốc. Dòng này sẽ được thiết lập để chạy vào lúc 5:03 sáng mỗi ngày “ 03 05 * * * /sbin/hwclock --systohc ”.

Ở dòng “# 25 04 1 * * /usr/bin/dnf -y update”, chúng có thể được sử dụng với mục đích là để 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, chúng cũng đã được cài đặt thành một comment như ví dụ ở trên. Vì vậy, chúng sẽ không chạy nữa. 

Super deal 032023

Ứng dụng của Crontab

Crontab có thể được ứng dụng cho rất nhiều công việc khác nhau. Cụ thể, một số những ứng dụng của cron được chia sẻ ngay dưới đây:

  • Cron giúp lên lịch task công việc: Giờ hệ thống (hay còn gọi là giờ điều hành) ở trên các máy tính đang sử dụng NTP (tức là Network Time Protocol) có thể lên lịch được task công việc. Chúng sẽ hỗ trợ người dùng cài đặt thời gian phần cứng dựa trên khoảng thời gian của hệ thống. 
  • Cập nhật, chạy chương trình: Dịch vụ cron sẽ tiến hành check những file ở trong thư mục /var/spool/cron, /ect/cron.d và cả file /etc/anacrontab. Trong những file này có chứa những nội dung dùng để xác định các công việc mà một cron cần phải chạy ở 

Bí quyết lên lịch với Crontab Linux

Đầu tiên, nếu bạn muốn tiến hành chạy một job bất kỳ nào đó, ví dụ vào lúc 3 giờ chiều mỗi thứ Ba, bạn cần gõ câu lệnh sau: “ 00 15 * * Thu /usr/local/bin/mycronjob.sh ”. Câu lệnh này sẽ thay bạn tiến hành mycronjob.sh vào đúng 3 giờ chiều mỗi thứ Ba. 

Hoặc bạn cũng có thể tiến hành chạy báo cáo theo quý khi kết thúc từng quý một. Mặc dù cron không có bất cứ tùy chọn nào cho “Ngày cuối cùng của tháng". Chúng ta có thể sử dụng ngay ngày đầu tiên của tháng tiếp theo đó như ví dụ dưới đây:

02 03 1 1,4,7,10 * /usr/local/bin/reports.sh: Câu lệnh này sẽ tiến hành chạy các báo cáo hàng quý vào đúng ngày đầu tiên của tháng sau đó, khi đã kết thúc một quý. 

01 09-17 * * * /usr/local/bin/hourlyreminder.sh” Câu lệnh này sẽ cho phép các job chạy trong vòng một phút và mỗi giờ một lần tính từ 9:01 đến 17:01.

Có những job sẽ cần phải thực hiện sau khoảng 2, 3 hoặc 4 giờ. Như vậy, chúng ta có thể lấy thương số của giờ và cả khoảng thời gian mà mình mong muốn. Ví dụ như sau: */3, tương đương với một job sau mỗi ba giờ đồng hồ. Hoặc 6-18/3 dùng để chạy sau mỗi ba tiếng, từ khoảng 6 giờ đến 18 giờ. Những khoảng thời gian khác cũng có thể chia theo cách tương tự. 

Có một điều bạn cần phải lưu ý: Những biểu thức chia cần phải cho ra kết quả với phần dư là 0. Lúc đó các job mới có thể chạy được.

>>> Có thể bạn quan tâm: Subnet là gì? Tìm hiểu về cách chia Subnet Mask từ A - Z

Một số giới hạn truy cập Cron trong Crontab Linux

Bên cạnh những chức năng và lợi ích của Crontab Linux thì người dùng cũng thắc mắc những giới hạn của Cron Linux là gì? Cụ thể, một số giới hạn mà bạn cần phải nắm rõ như sau:

Cron.d

Ở trong thư mục /etc/cron.d có chứa những ứng dụng ví dụ như SpamAssassin, sysstat và cả file cài đặt cron,... Bởi lẽ không có người sử dụng SpamAssassin hay sysstat nên những chương trình này cần có một vị trí để định vị được các file crom. Vì vậy, tất cả chúng đều sẽ được đặt ở /etc/cron.d

Trong File /etc/cron.d/sysstat có chứa những cron job có liên quan đến các báo cáo hoạt động của hệ thống (SAR). Những file cron này đều có cùng một định dạng với file cron của người sử dụng. 

Cron file sysstat gồm có hai dòng lệnh nhằm thực hiện các task. Dòng lệnh thứ nhất sẽ tiến hành chạy lệ sa1 cứ mỗi 10 phút nhằm thu thập các dữ liệu ở trong file nhị phân đặc biệt. Chúng được đặt ở vị trí thư mục /var/log/sa. Kế đến, cứ mỗi tối vào lúc 23:53, chương trình sa2 sẽ tiến hành chạy để tạo ra một bản tóm tắt hằng ngày. 

Anacron

Một chương trình anacron sẽ thực hiện những chức năng tương tự như crond. Tuy nhiên, chúng cũng có thể chạy những job đã bị bỏ qua. Ví dụ như khi máy tính đã tắt hoặc máy không thể chạy được các job ở trong một thời gian nhất định. Vậy nên, công cụ này sẽ rất có ích đối với những người sử dụng laptop haowjc những máy tính thường được đưa vào trong chế độ sleep.

Ngay khi máy tính được khởi động thì anacron sẽ tiến hành kiểm tra xem liệu các job đã được cài đặt cấu hình có bỏ lỡ một lịch chạy nào hay không. Nếu có thì các job này sẽ được tiến hành chạy ngay lúc đó. Tuy nhiên, các job cũng sẽ chỉ chạy một lần mặc cho nhiều lần bị lỡ lịch. 

Ngoài ra, chương trình anacron cũng sẽ cung cấp cho bạn một số những tùy chọn dễ dàng để chạy cho các task thường được lên lịch. Bạn chỉ cần tiến hành cài đặt những script vào trong thư mục /etc/cron.[hourly|daily|weekly|monthly] tùy thuộc vào tần suất mà bạn muốn các job được chạy.  

Shortcut trong Crontab Linux

File /etc/anacrontab ở phía trên sẽ cho bạn thấy được các shortcut (các phím tắt) có thể sử dụng được. Đồng thời chúng cũng sẽ chỉ định cho bạn một số thời gian phổ biến nhất. Những shortcut thời gian này có thể thay thế được 5 trường thường được sử dụng để chỉ định thời gian. Và ký tự @ được sử dụng nhằm mục đích xác định shortcut cho crontab. Phía dưới đây là danh sách các shortcut cùng ý nghĩa của chúng mà bạn cần biết:

  • @report: Tức là chạy sau khi reboot
  • @yearly: Từ là chạy hàng năm, ví dụ cụ thể: 0 0  1 1 *
  • @annually: Tức là chạy hàng năm, ví dụ cụ thể: 0 0 1 1 *
  • @monthly: Tức là chạy hàng tháng, ví dụ cụ thể: 0 0 1 * *
  • @weekly: Tức là chạy hàng tuần, ví dụ cụ thể: 0 0 * * 0
  • @daily: Tức là chạy hàng ngày, ví dụ cụ thể: 0 0 * * *
  • @hourly: Tức là chạy hàng giờ, ví dụ cụ thể: 0 * * * *

Những shortcut được nêu ở trên có thể sử dụng được ở trong nhiều file crontab Linux khác nhau. Ví dụ như chạy ở trong thư mục /etc/cron.d

Trên đây là toàn bộ thông tin về crontabFPT Cloud chia sẻ. Thông tin về công dụng, chức năng của crontab sẽ giúp bạn sử dụng chúng một cách chính xác và hiệu quả nhất. Hy vọng, sau khi đã nắm rõ những kiến thức về cron có thể giúp bạn thực hiện mọi thứ một cách dễ dàng hơn. 

 

Liên hệ với chúng tôi để biết thêm thông tin chi tiết về dịch vụ của FPT Smart Cloud

 

Crontab là gì? Cách cài đặt & sử dụng Crontab Linux từ A – Z