Cách sử dụng cron để tự động hóa các tác vụ trên Ubuntu 18.04

Giới thiệu

Cron là một trình nền lập kế hoạch công việc dựa trên thời gian được tìm thấy trong các hệ điều hành giống như Unix, bao gồm các bản phân phối Linux. Cron chạy trong nền và các hoạt động được lên lịch với cron, referred to as cron jobs, are executed automatically, making cron useful for automating maintenance-related tasks.

Hướng dẫn này cung cấp một cái nhìn tổng quan về cách lên lịch các tác vụ bằng cú pháp đặc biệt của Cron. Nó cũng đi qua một vài phím tắt, bạn có thể sử dụng để xúc tiến quá trình viết lịch việc và làm cho chúng dễ hiểu hơn.

Điều kiện tiên quyết

Để hoàn thành hướng dẫn này, bạn sẽ cần truy cập vào máy tính chạy Ubuntu 18.04. Đây có thể là máy cục bộ của bạn, một máy ảo hoặc máy chủ riêng ảo.

Bất kể loại máy tính nào bạn sử dụng để theo dõi hướng dẫn này, nó sẽ có người dùng không root với các đặc quyền quản trị được cấu hình. Để thiết lập điều này, hãy làm theo hướng dẫn thiết lập máy chủ ban đầu của chúng tôi cho Ubuntu 18.04.

Cài đặt cron.

Hầu như mọi phân phối Linux đều có một số hình thức cron được cài đặt theo mặc định. Tuy nhiên, nếu bạn đang sử dụng máy Ubuntu trên đó cron không được cài đặt, bạn có thể cài đặt nó bằng apt.

Trước khi cài đặt cron Trên máy Ubuntu, hãy cập nhật chỉ mục gói cục bộ của máy tính:

  • Cập nhật Sudo Apt.

Sau đó cài đặt cron với lệnh sau:

  • sudo apt cài đặt cron

Bạn sẽ cần đảm bảo rằng nó cũng được thiết lập để chạy trong nền:

  • sudo systemctl cho phép cron

Đầu ra.
Synchronizing state of cron.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable cron

Sau đó, cron sẽ được cài đặt trên hệ thống của bạn và sẵn sàng để bạn bắt đầu lập lịch trình việc lên lịch trình.

Hiểu làm thế nào cron hoạt động

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 hồ sơ người dùng trên hệ thống có thể có crontab where they can schedule jobs, which is stored under /var/spool/cron/crontabs/.

Để sắp xếp một công việc, hãy mở crontab để chỉnh sửa và thêm một tác vụ được viết dưới dạng Biểu thức Cron . Cú pháp cho các biểu thức cron có thể được chia thành hai yếu tố: lịch biểu và lệnh để chạy. crontab for editing and add a task written in the form of a cron expression. The syntax for cron expressions can be broken down into two elements: the schedule and the command to run.

Lệnh có thể là hầu như bất kỳ lệnh nào bạn thường chạy trên dòng lệnh. Thành phần lịch biểu của cú pháp được chia thành 5 trường khác nhau, được viết theo thứ tự sau:

Đồng ruộng Giá trị được phép
phút 0-59
giờ 0-23
Ngày trong tháng 1-31
tháng 1-12 hoặc Jan-dec
Ngày trong tuần 0-6 hoặc Sun-Sat

Cùng với nhau, các nhiệm vụ được lên lịch trong một crontab được cấu trúc như sau:

phút giờ day_of_month tháng day_of_week Command_to_run hour day_of_month month day_of_week command_to_run

Đây là một ví dụ chức năng của biểu thức cron. Biểu thức này chạy lệnh curl http://www.google.com Thứ ba hàng tuần lúc 5:30 chiều:

30 17 * * 2 Curl http://www.google.com

Ngoài ra còn có một vài ký tự đặc biệt bạn có thể đưa vào thành phần lịch biểu của biểu thức cron để hợp lý hóa các tác vụ lập lịch:

  • * : Trong biểu thức cron, dấu hoa thị là một biến ký tự đại diện cho "tất cả." Do đó, một nhiệm vụ được lên lịch với * * * * * ... sẽ chạy mỗi phút mỗi giờ mỗi ngày mỗi tháng.
  • , : dấu phẩy chia giá các giá trị lập lịch để tạo thành một danh sách. Nếu bạn muốn có một nhiệm vụ chạy ở đầu và giữa mỗi giờ, thay vì viết ra hai nhiệm vụ riêng biệt (ví dụ: 0 * * * * ... and 30 * * * * ...), you could achieve the same functionality with one (0,30 * * * * ...).
  • - : một dấu gạch nối đại diện cho một phạm vi giá trị trong trường Lịch biểu. Thay vì có 30 nhiệm vụ theo lịch trình riêng biệt cho một lệnh bạn muốn chạy trong 30 phút đầu tiên mỗi giờ (như trong với lệnh sau: , 1 * * * * ..., 2 * * * * ..., and so on), instead, you could schedule it as 0-29 * * * * ....
  • / : Bạn có thể sử dụng dấu gạch chéo về phía trước với dấu hoa thị để thể hiện giá trị bước. Ví dụ: thay vì viết ra tám phần riêng biệt riêng biệt cron tasks to run a command every three hours (as in, 0 0 * * * ..., 0 3 * * * ..., 0 6 * * * ..., and so on), you could schedule it to run like this: 0 */3 * * * ....

Lưu ý : Bạn không thể thể hiện các giá trị bước tùy ý; Bạn chỉ có thể sử dụng các số nguyên phân chia đều vào phạm vi được cho phép bởi trường trong câu hỏi. Chẳng hạn, trong trường "Giờ", bạn chỉ có thể làm theo dấu gạch chéo về phía trước với 1, 2, 3, 4, 6, 8, or 12.

Dưới đây là một số ví dụ khác về cách sử dụng thành phần lập lịch của Cron:

  • * * * * * - Chạy lệnh mỗi phút. - Chạy lệnh mỗi phút
  • 12 * * * * * * * - Chạy lệnh 12 phút sau mỗi giờ. -. Chạy lệnh 12 phút sau mỗi giờ
  • 0,15,30,45 * * * * - Chạy lệnh cứ sau 15 phút.
  • * / 15 * * * * - Chạy lệnh cứ sau 15 phút.
  • 0 4 * * * - Chạy lệnh mỗi ngày lúc 4:00 sáng.
  • 0 4 * * 2-4 - Chạy lệnh mỗi thứ ba, thứ tư và thứ năm lúc 4:00 sáng.
  • 20,40 * / 8 * 7-12 * - Chạy lệnh vào phút thứ 20 và 40 của mỗi giờ thứ 8 mỗi ngày trong 6 tháng cuối năm.

Nếu bạn tìm thấy bất kỳ khó hiểu nào hoặc nếu bạn muốn trợ giúp viết lịch cho cron Tác vụ, Cronitor cung cấp một tiện dụng < / a> cron Trình chỉnh sửa biểu thức lịch trình có tên "crontab guru" mà bạn có thể sử dụng để kiểm tra xem cron Lịch trình là hợp lệ. cron tasks, Cronitor provides a handy cron schedule expression editor named Crontab Guru which you can use to check whether your cron schedules are valid.

Quản lý crontabs.

Khi bạn đã giải quyết một lịch trình và bạn biết công việc bạn muốn chạy, bạn sẽ cần đặt nó ở đâu đó daemon của bạn sẽ có thể đọc nó.

Như đã đề cập trước đó, A crontab là một tệp đặc biệt giữ lịch trình công việc cron < / a> sẽ chạy. Tuy nhiên, những thứ này không có ý định được chỉnh sửa trực tiếp. Thay vào đó, bạn nên sử dụng lệnh crontab . Điều này cho phép bạn chỉnh sửa hồ sơ người dùng của mình crontab mà không thay đổi đặc quyền của bạn với sudo . Lệnh crontab cũng sẽ cho bạn biết nếu bạn có lỗi cú pháp trong crontab , trong khi chỉnh sửa nó trực tiếp sẽ không. crontab is a special file that holds the schedule of jobs cron will run. However, these are not intended to be edited directly. Instead, its recommended that you use the crontab command. This allows you to edit your user profiles crontab without changing your privileges with sudo. The crontab command will also let you know if you have syntax errors in the crontab, while editing it directly will not.

Bạn có thể chỉnh sửa crontab với lệnh sau:

  • crontab -e.

Nếu đây là lần đầu tiên bạn chạy crontab trong hồ sơ người dùng này, nó sẽ nhắc bạn chọn một văn bản mặc định Trình chỉnh sửa để sử dụng khi chỉnh sửa crontab : crontab command under this user profile, it will prompt you to select a default text editor to use when editing your crontab:

Đầu ra.
Không có crontab cho Sammy - Sử dụng một trống Chọn một trình soạn thảo. Để thay đổi sau, hãy chạy 'select-editor'. 1. / bin / nano

Nhập số tương ứng với trình soạn thảo của sự lựa chọn của bạn. Ngoài ra, bạn có thể nhấn ENTER to accept the default choice, nano.

Sau khi thực hiện lựa chọn của bạn, bạn sẽ được đưa đến crontab chứa một số hướng dẫn nhận xét về cách sử dụng nó: < / a >.crontab containing some commented-out instructions on how to use it:

# Chỉnh sửa tệp này để giới thiệu các tác vụ được điều hành bởi cron. # # Mỗi nhiệm vụ chạy phải được xác định thông qua một dòng duy nhất # chỉ ra với các trường khác nhau khi nhiệm vụ sẽ được chạy # và lệnh nào để chạy cho nhiệm vụ # # Để xác định thời gian bạn có thể cung cấp các giá trị cụ thể cho # phút (m), giờ (h), ngày tháng (dom), tháng (mon), # và ngày trong tuần (Dow) hoặc sử dụng '*' trong các trường này (đối với 'bất kỳ'). # # Lưu ý rằng các nhiệm vụ sẽ được bắt đầu dựa trên hệ thống của Cron # khái niệm về thời gian và múi giờ của daemon. # # Đầu ra của các công việc crontab (bao gồm cả lỗi) được gửi qua # Email cho người dùng tệp crontab thuộc về (trừ khi được chuyển hướng). # # Ví dụ: bạn có thể chạy bản sao lưu tất cả các tài khoản người dùng của mình # lúc 5 giờ sáng mỗi tuần với: # 0 5 * * 1 tar -zcf /var/backups/home.tgz / home / # # Để biết thêm thông tin, hãy xem các trang thủ công của crontab (5) và cron (8) # # m h dom mon dow mệnh lệnh

Khi bạn chạy crontab -e Trong tương lai, nó sẽ hiển thị crontab trong trình soạn thảo văn bản này tự động. Khi trong trình chỉnh sửa, bạn có thể nhập lịch trình của mình với từng công việc trên một dòng mới. Mặt khác, bạn có thể lưu và đóng crontab cho bây giờ ( Ctrl + X , Y , sau đó Nhập Nếu bạn đã chọn Nano ). .crontab -e in the future, it will bring up your crontab in this text editor automatically. Once in the editor, you can input your schedule with each job on a new line. Otherwise, you can save and close the crontab for now (CTRL + X, Y, then ENTER if you selected nano).

Note : Trên các hệ thống Linux, có một crontab được lưu trữ dưới < AI = 4> / etc / thư mục. Đây là một hệ thống rộng crontab có một trường bổ sung mà hồ sơ người dùng mỗi cron < AI = 9> Công việc nên được chạy theo. Hướng dẫn này tập trung vào crontabs , nhưng nếu bạn muốn chỉnh sửa toàn hệ thống crontab , bạn có thể làm như vậy với lệnh sau: : On Linux systems, there is another crontab stored under the /etc/ directory. This is a system-wide crontab that has an additional field for which user profile each cron job should be run under. This tutorial focuses on user-specific crontabs, but if you wanted to edit the system-wide crontab, you could do so with the following command:

  • sudo nano / etc / crontab

Nếu bạn muốn xem nội dung của crontab , nhưng không chỉnh sửa nó, bạn có thể sử dụng lệnh sau: .crontab, but not edit it, you can use the following command:

  • crontab -l.

Bạn có thể xóa crontab với lệnh sau:

CẢNH BÁO : Lệnh sau sẽ không yêu cầu bạn xác nhận rằng bạn muốn xóa crontab . Chỉ chạy nó nếu bạn chắc chắn rằng bạn muốn xóa nó . : The following command will not ask you to confirm that you want to erase your crontab. Only run it if you are certain that you want to erase it.

  • crontab -r.

Lệnh này sẽ xóa crontab ngay lập tức. Tuy nhiên, bạn có thể bao gồm -i flag to have the command prompt you to confirm that you actually want to delete the users crontab:

  • crontab -r -i.

Đầu ra.
Không có crontab cho Sammy - Sử dụng một trống

Chọn một trình soạn thảo. Để thay đổi sau, hãy chạy 'select-editor'.y to delete the crontab or n to cancel the deletion.

1. / bin / nano