TỰ ĐỘNG CÔNG VIỆC BẰNG CRON TRÊN LINUX | CO-WELL Asia

Kỳ này, hãy cùng chuyên viên của CO-WELL Asia tìm hiểu và khám phá về phương pháp sử dụng Cron để tự động hóa việc làm trên Linux. Mời bạn đọc theo dõi !

1. Cron là gì?

Cron ( crontab ) là một chương trình dựa trên thời hạn thực được tạo trên hệ điều hành nhân Linux hoặc những hệ quản lý Unix-like, thường được dùng để chạy những tác vụ ngầm theo một lịch trình đơn cử ví dụ như : sao lưu, đồng điệu file, chạy batch, … Một khi được khởi động, nó sẽ được chạy ngầm mãi mãi .

Tính hữu ích khi chạy cron:

  • Bạn có thể cài đặt để cron thực thi việc quét xem những user trial nào đã bị expired và delete hoặc set inactive tài khoản của họ.
  • Gửi email tới user sử dụng hệ thống theo thời gian biểu đã định.
  • Xoá bỏ những file cache hàng tháng.
  • Kiểm tra hàng ngày xem những link nào của website bị hỏng hay không để nhanh chóng khắc phục
  • Backup cơ sở dữ liệu.

2. Cài đặt Cron

Trong bài viết này, chuyên viên của CO-WELL Asia sẽ sử dụng hệ quản lý và điều hành Ubuntu 20.04 để triển khai demo crontab .

  • Bước 1 : Kiểm tra Cron đã được setup hay chưa ?

sudo systemctl status cron

Nếu tác dụng như sau thì cron đã được thiết lập, bạn hoàn toàn có thể bỏ lỡ những step setup :

cron 1

  • Bước 2 : Update những package

sudo apt update

  • Bước 3: Cài đặt cron

sudo apt install cron

  • Bước 4: Enable cron mỗi khi khởi động

sudo systemctl enable cron

cron 2

3. Cách Cron hoạt động

Các công việc cron được ghi lại và quản lý trong một tệp đặc biệt được gọi là crontab. Mỗi user đều có một crontab riêng được lưu ở /var/spool/cron/crontabs/.

Để thêm một cronjob, bạn sẽ mở crontab của mình thêm một cron được viết dưới dạng a cron expression. Một biểu thức cron được chia làm 2 phần: lịch trình (schedule) và câu lệnh (command).

  • Cấu trúc
* * * * * command được thực hiệ

n - - - - - | | | | | | | | | +----- ngày trong tuần (

0

-

6

) (Sunday=

0

) | | | +------- tháng (

1

-

12

) | | +--------- ngày trong tháng (

1

-

31

) | +----------- giờ (

0

-

23

) +------------- phút (

0

-

59

)

Phần schedule còn nhận một số giá trị đặc biệt, nhằm viết biểu thức cron một cách dễ dàng hơn:
* : Tất cả các giá trị
- : Khoảng giá trị. VD: 6-8 cột giờ thực hiện lúc 6h, 7h, 8h
,: Liệt kê các giá trị. VD: 10,20,30 cột phút thực hiện ở các phút 10, phút 20, phút 30.
/: Bước nhảy giá trị. VD: **/15 8-10/2 * * ** sẽ thực hiện vào 8h00, 8h15, 8h30, 8h45, 10h00, 10h15, 10h30, 10h45

Ví dụ :

* * * * * - Chạy command mỗi phút

0,15,30,45 * * * * - Chạy command mỗi 15 phút.

*/15 * * * * - Giống như trên.

0 4 * * * - Chạy command mỗi ngày 4 giờ sáng.

0 4 * * 2-4 - Chạy command vào 4 giờ chiều Thứ 3, Thứ 4, Thứ 5.

    20,40 */8 * 7-

12

* - Chạy command vào phút 20 và 40 mỗi 8 giờ vào tháng 7 đến tháng 12.

Một số syntax đặc biệt quan trọng :

@yearly Chạy một lần mỗi năm "0 0 1 1 *"
@annually (Tương tự @yearly)
@monthly Chạy mỗi tháng một lần "0 0 1 * *"
@weekly Chạy mỗi tuần một lần "0 0 * * 0"
@daily Chạy một lần mỗi ngày "0 0 * * *"
@midnight (Tương tự @daily)
@hourly Chạy một lần mỗi giờ "0 * * * *"

  • Quản lý crontab

Để thêm / sửa / xóa crontab :

crontab -e

Nếu là lần tiên phong chạy crontab thì OS sẽ hỏi bạn editor sử dụng :

no crontab for sammy - using an empty one

Select an editor. To change later, run 'select-editor'.

1. /bin/nano

2. /usr/bin/vim.basic

3. /usr/bin/vim.tiny

4. /bin/ed

Choose 1-4 [1]:

Từ lần thứ 2 :

cron 3

Thêm và lưu lại, crontab không cần khởi động lại để vận dụng .Xem những crontab đang chạy :

crontab -l

Xóa crontab của user :

crontab -r

4. Quản lý output

Do cron là tác vụ chạy background nên không hề biết nó đã thành công xuất sắc hay chưa. Ta hoàn toàn có thể thử nghiệm một số ít cách khác nhau để theo dõi việc triển khai xong của cronjob .

Nếu bạn có một service để gửi mail, bạn có thể gửi kết quả của cron tới email được chỉ định ở MAILTO trên đầu crontab

MAILTO="[email protected]"

SHELL=/bin/bash

HOME=/

* * * * * echo ‘Run this command every minute’

Bạn cũng trọn vẹn hoàn toàn có thể ghi oupt ra một log file :

* * * * * echo ‘Run this command every minute’ >> /path/to/file.log

5. Hạn chế truy cập

Bạn có thể quản lý user nào được phép sử dụng crontab với các file cron.allow và cron.deny, cả hai file này đều nằm ở thư mục / etc /.
Nếu cron.allow tồn tại thì chỉ user được list mới edit được crontab. Nếu cả 2 file cùng tồn tại và cùng user được list thì cron.allow sẽ được ưu tiên hơn.
Cú pháp:

sudo echo ALL >>/etc/cron.deny

sudo echo testuser>>/etc/cron.allow

Trên đây là những hướng dẫn từ cơ bản tới chi tiết cụ thể của chuyên viên từ CO-WELL Asia về tự động hóa việc làm bằng Cron trên Linux. Đừng quên theo dõi phân mục CODEWELL trên website CO-WELL Asia để đón đọc những bài viết công nghệ tiên tiến hữu dụng nhé !

TrangDT – CO-WELL Asia