Tìm hiểu về Cron và cách sử dụng

30/12/2020

Bạn đã từng lên thời gian biểu cho chính bạn chưa? Cách hoạt động của thời gian biểu cũng giống với cách hoạt động của crontab đối với máy tính của bạn. Bài viết này sẽ giúp bạn hiểu về cron và cách thức hoạt động của chúng.

Mục lục

  1. Tổng quan
  2. Cách thức hoạt động
  3. Cấu trúc file crontab
  4. Ví dụ cụ thể
  5. Tài liệu tham khảo

1. Tổng quan

Cron là một tiện ích cho phép chạy các dòng lệnh theo một chu kì thời gian nào đó. Crond là một daemon process, điều này cho phép nó chạy ngầm mãi mãi trong hệ thống linux.

Crontab (hay Crontable) là bảng chứa các câu lệnh cài đặt của cron. Nhờ có crontab, ta có thể sử dụng để có thể chạy những công việc tự động theo một lịch trình cụ thể đã cài đặt từ trước.

2. Cách thức hoạt động

Một số câu lệnh thường dùng:

crontab -e  #tạo hoặc sửa file crontab  crontab -l  #hiển thị file crontab  crontab -r  #xóa file crontab

Thông thường, trên một số máy vps đã được cài sẵn tiện ích cron. Ta có thể kiểm tra bằng cách gõ crontab -l. Nếu máy thông báo lỗi cú pháp của crontab thì máy của bạn chưa được cài đặt tiện ích này.

Để cài đặt, bạn gõ lệnh như sau:

sudo yum -y install cronie

Khởi chạy crontab và tự khởi động khi đăng nhập:

systemctl start crond systemctl enable crond

3. Cấu trúc file crontab

Một crontab file thường có 5 trường thiết lập thời gian như sau:

*     *     *     *     *   command -     -     -     -     - |     |     |     |     | |     |     |     |     +-- day of week (0 - 6) (Sunday=0) |     |     |     +--- month (1 - 12) |     |     +----- day of month (1 - 31) |     +------- hour (0 - 23) +--------- min (0 - 59)

Ví dụ:

  • Chạy một bash script 5 phút 1 lần:
*/5 * * * * sh simplescript.sh
  • Chạy một python script vào 4h30 sáng thứ 5 hàng tuần:
30 4 * * 4 python3 pythonscript.py

Lưu ý: để chạy các script, bạn phải thông báo môi trường chạy cho script đó.

4. Ví dụ cụ thể

Trong quá trình thực tập, tôi luôn phải gửi mail báo cáo cho người phụ trách để thông báo về tiến độ làm việc của mình vào tối mỗi tuần từ thứ 2 đến thứ 6 hàng tuần. Tuy nhiên, vào những lúc đó tôi hay đi chơi. Vì vậy, tôi đã sử dụng tiện ích cron để hỗ trợ gửi mail tự động vào đúng thời gian đó với một nội dung tôi đã soạn từ trước.

Đầu tiên, tôi viết sẵn một đoạn bash shell gửi email tự động có tên là gui-baocao.sh. Shell này sẽ có chức năng lấy văn bản từ một file txt có trước, thêm thông tin tiêu đề cho email rồi gửi email tới danh sách đối tượng đã cho trước.

Tiếp đến, tôi tiến hành soạn trước một báo cáo trên máy có tên là baocao.txt.

Sau đó tiến hành thêm vào crontab và cài đặt chu kì thời gian cho nó như sau:

0 19 * * 1-5 sh /home/huan/gui-baocao.sh 

Như vậy, mỗi tối tôi có thể đi chơi thoả mái mà báo cáo vẫn sẽ được gửi đúng giờ.

Sau này, khung giờ báo cáo của tôi thay đổi, tôi chỉ cần gửi báo cáo vào tối thứ 3 và thứ 6 hàng tuần. Vì vậy, tôi thay đổi file crontab của mình như sau:

0 19 * * 2,5 sh /home/huan/gui-baocao.sh

5. Tài liệu tham khảo

  1. Tìm hiểu về Cron
  2. Cài đặt Cron
ONET IDC thành lập vào năm 2012, là công ty chuyên nghiệp tại Việt Nam trong lĩnh vực cung cấp dịch vụ Hosting, VPS, máy chủ vật lý, dịch vụ Firewall Anti DDoS, SSL… Với 10 năm xây dựng và phát triển, ứng dụng nhiều công nghệ hiện đại, ONET IDC đã giúp hàng ngàn khách hàng tin tưởng lựa chọn, mang lại sự ổn định tuyệt đối cho website của khách hàng để thúc đẩy việc kinh doanh đạt được hiệu quả và thành công.
Bài viết liên quan

[CVE-2019-12949] Khai thác lỗ hổng XSS trong pfSense 2.4.4

Mô tả Trong phiên bản pfSense 2.4.4 kẻ tấn công có thể thực hiện bất kì command nào với quyền...
30/12/2020

[NGINX] Các khái niệm trong tệp tin cấu hình của NGINX

Bài viết tìm hiểu về cấu trúc và một số khái niệm trong tệp tin cấu hình mặc định của...
30/12/2020

[Rsyslog] [LAB] [Cơ bản] [Phần 1] Hướng dẫn cấu hình Log tập trung trên Linux

Log tập trung là quá trình tập trung, thu thập, phân tích… các log cần thiết từ nhiều nguồn...
30/12/2020