Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Python
Code

Quản lý Cron Job bằng Python

by
Difficulty:BeginnerLength:MediumLanguages:

Vietnamese (Tiếng Việt) translation by Dai Phong (you can also view the original English article)

Trong hướng dẫn này, bạn sẽ được học tầm quan trọng của cron job và lý do bạn cần đến chúng. Bạn sẽ có một cái nhìn khái quát về python-crontab, một mô-đun Python để tương tác với crontab. Bạn sẽ học cách thao tác các cron job từ một chương trình Python bằng mô-đun python-crontab.

Cron là gì?

Trong quá trình quản trị hệ thống, chúng ta cần chạy các công việc (job) nền trên một máy chủ để thực hiện các tác vụ thường ngày. Cron là một tiến trình hệ thống được sử dụng để thực hiện các tác vụ nền thường xuyên. Cron yêu cầu một tập tin có tên là crontab chứa danh sách các tác vụ được thực thi tại một thời điểm cụ thể. Tất cả các công việc (job) này được thực hiện trong nền tại thời điểm cụ thể.

Để xem các cron job đang chạy trên hệ thống của bạn, hãy chuyển đến Terminal của bạn và nhập vào:

Lệnh trên sẽ hiển thị danh sách cron job trong tập tin crontab. Để thêm một cron job mới vào crontab, hãy nhập vào:

Lệnh trên sẽ hiển thị tập tin crontab nơi bạn có thể lên lịch một cron job. Giả sử bạn có một tập tin có tên là hello.py như sau:

Bây giờ, để lên lịch cho một cron job thực hiện script ở trên để xuất sang một tập tin khác, bạn cần phải thêm dòng code sau đây:

Dòng code trên lên lịch thực thi tập tin với đầu ra vào một tập tin gọi là a.txt. Các con số đằng trước lệnh là để xác định thời gian thực hiện cron job. Cú pháp thời gian có năm phần:

  1. phút
  2. giờ
  3. ngày trong tháng
  4. tháng
  5. ngày trong tuần

Dấu sao (*) trong cú pháp thời gian cho biết nó sẽ chạy mọi lúc.

Giới thiệu Python-Crontab

python-crontab là một mô-đun Python cung cấp truy cập vào các cron job và cho phép chúng ta thao tác trên tập tin crontab từ chương trình Python. Nó tự động hóa quá trình sửa đổi tập tin crontab một cách thủ công. Để làm quen với python-crontab, bạn cần cài đặt module này bằng pip:

Một khi bạn đã cài đặt python-crontab, hãy import nó vào chương trình python.

Viết Cron Job Đầu tiên của Bạn

Hãy sử dụng mô-đun python-crontab để viết cron job đầu tiên của chúng ta. Tạo một chương trình Python có tên là writeDate.py. Bên trong writeDate.py, thêm code để in ngày và giờ hiện tại vào một tập tin. writeDate.py sẽ như sau:

Lưu các thay đổi ở trên.

Hãy tạo ra một chương trình Python khác sẽ lên lịch trình cho chương trình Python writeDate.py để chạy mỗi phút. Hãy tạo một tập tin scheduleCron.py.

Import mô-đun CronTab vào chương trình scheduleCron.py.

Sử dụng mô-đun CronTab, hãy truy cập crontab của hệ thống.

Lệnh ở trên tạo ra một truy cập vào crontab của hệ thống của người dùng. Hãy lặp qua các cron job và bạn sẽ có thể thấy bất kỳ cron job nào được tạo ra một cách thủ công cho tên người dùng cụ thể.

Lưu các thay đổi và thử thực thi scheduleCron.py và bạn sẽ có danh sách các cron job, nếu có, cho người dùng cụ thể. Bạn sẽ có thể thấy một thứ tương tự như sau khi thực thi chương trình trên:

Hãy tiếp tục với việc tạo ra một cron job mới bằng mô-đun CronTab. Bạn có thể tạo một cron job mới bằng cách sử dụng phương thức new và chỉ định lệnh để được thực thi.

Như bạn có thể thấy trong dòng code trên, tôi đã chỉ định lệnh sẽ được thực thi khi cron job được thực thi. Một khi bạn có cron job mới, bạn cần phải lên lịch cho cron job đó.

Hãy lên lịch cho cron job để chạy mỗi phút. Vì vậy, trong một khoảng thời gian một phút, ngày và giờ hiện tại sẽ được thêm vào tập tin dateInfo.txt. Để lên lịch cron job mỗi phút, hãy thêm dòng code sau:

Một khi bạn đã lên lịch cho job, bạn cần phải ghi job vào cron tab.

Đây là tập tin scheduleCron.py:

Lưu các thay đổi ở trên và thực thi chương trình Python.

Một khi nó được thực thi, hãy kiểm tra tập tin crontab bằng lệnh sau đây:

Lệnh trên sẽ hiển thị cron job vừa mới được thêm vào.

Đợi một phút và kiểm tra thư mục chính của bạn và bạn sẽ có thể thấy tập tin dateInfo.txt với ngày và giờ hiện tại. Tập tin này sẽ được cập nhật mỗi phút và ngày và giờ hiện tại sẽ được thêm vào nội dung hiện có.

Cập nhật một Cron Job Hiện có

Để cập nhật một cron job hiện có, bạn cần phải tìm cron job bằng lệnh hoặc bằng một Id. Bạn có thể có một Id được thiết lập cho một cron job trong hình thức của một comment khi tạo một cron job bằng python-crontab. Đây là cách bạn có thể tạo một cron job với một comment:

Như đã thấy trong dòng code trên, một cron job mới đã được tạo ra bằng cách sử dụng comment dateinfo. Comment ở trên có thể được sử dụng để tìm kiếm các cron job.

Những gì bạn cần làm là lặp qua tất cả các job trong crontab và kiểm tra job bằng comment dateinfo. Đây là code:

Kiểm tra từng comment của job bằng thuộc tính job.comment.

Một khi bạn đã có job, hãy lên lịch lại cron job và ghi vào cron. Đây là code hoàn chỉnh:

Lưu các thay đổi ở trên và thực thi tập tin scheduleCron.py. Liệt kê các phần tử trong tập tin crontab bằng lệnh sau:

Bạn sẽ có thể thấy cron job với lịch biểu đã được cập nhật.

Giải phóng Job khỏi Crontab

python-crontab cung cấp các phương thức để xóa hoặc loại bỏ các job khỏi crontab. Bạn có thể loại bỏ một cron job khỏi crontab dựa trên lịch biểu, comment, hoặc lệnh.

Giả sử bạn muốn xóa job với comment dateinfo khỏi crontab. Code sẽ là:

Tương tự, để loại bỏ một job dựa trên một comment, bạn có thể trực tiếp gọi phương thức remove trên my_cron mà không có bất kỳ sự lặp lại nào. Đây là code:

Để loại bỏ tất cả các job khỏi crontab, bạn có thể gọi phương thức remove_all.

Một khi thực hiện xong những thay đổi, ghi nó trở lại cron bằng lệnh sau đây:

Tính Tần suất của Job

Để kiểm tra bao nhiêu lần job của bạn được thực hiện bằng python-crontab, bạn có thể sử dụng phương thức frequency. Một khi bạn đã có job, bạn có thể gọi phương thức frequency, nó sẽ trả về số lần job được thực thi trong một năm.

Để kiểm tra số lần job được thực thi trong một giờ, bạn có thể sử dụng phương thức frequency_per_hour.

Để kiểm tra số lần job được thực thi trong một ngày, bạn có thể sử dụng phương thức frequency_per_day.

Kiểm tra Lịch biểu của Job

python-crontab cung cấp các tính năng để kiểm tra lịch biểu của một job cụ thể. Để làm việc này, bạn cần có module croniter được cài đặt trên hệ thống của bạn. Cài đặt croniter bằng cách sử dụng pip:

Một khi bạn đã cài đặt croniter, hãy gọi phương thức schedule trên job để có được lịch biểu của job.

Bây giờ bạn có thể lấy được lịch biểu tiếp theo của job bằng phương thức get_next.

Dưới đây là code hoàn chỉnh:

Bạn thậm chí có thể lấy được lịch biểu trước đó bằng phương thức get_prev.

Tóm tắt

Trong hướng dẫn này, bạn đã học được cách làm quen với việc sử dụng python-crontab để truy cập crontab của hệ thống từ một chương trình Python. Sử dụng python-crontab, bạn có thể tự động hoá quá trình tạo, cập nhật và lên lịch các cron job.

Bạn đã sử dụng python-crontab hoặc bất kỳ thư viện khác để truy cập crontab của hệ thống chưa? Tôi rất muốn lắng nghe những suy nghĩ của bạn. Hãy cho chúng tôi biết những đề xuất ​​của bạn trong phần bình luận ​​dưới đây nhé.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.