Cron là một công cụ lập lịch mạnh mẽ cho phép bạn lập lịch các tập lệnh hoặc lệnh và chạy chúng một cách thường xuyên. Đó là nhịp tim giữ cho các chương trình khác nhau và các tập lệnh tùy chỉnh hoạt động tích cực. Bạn lên lịch cho các tập lệnh chạy trong tệp crontab. Mặc dù tệp này có thể đáng sợ khi xem lần đầu, nhưng nó là một thứ có thể khá dễ dàng để nắm bắt với một chút thực hành.

Trong một số bản phân phối Linux, như Arch Linux, cron không được cài đặt theo mặc định vì nó sử dụng systemd như một sự thay thế cron. Ngoài ra, có nhiều thực hiện cronvà mỗi người có cách chỉnh sửa / lập lịch công việc cron riêng. Trong hướng dẫn này, chúng tôi sẽ tập trung vào cronie, là mặc định trong hầu hết các bản phân phối Linux, như Ubuntu.

Xem các mục nhập cron

Xem crontab của bạn cho phép bạn xem các tác vụ đã lên lịch sẽ chạy trong tài khoản của bạn.

Bạn cũng có thể xem các tác vụ đã lên lịch cho tài khoản gốc bằng cách sử dụng sudo.

Chỉnh sửa các mục cron

Nếu bạn chưa bao giờ thiết lập cron job, việc xem tệp này sẽ hiển thị tệp trống hoặc tệp có nhận xét. Để thêm một mục nhập, bạn sẽ cần mở tệp crontab của mình bằng cách sử dụng -e.

Các mục nhập Crontab sẽ luôn tuân theo cùng một cú pháp, cho phép bạn kiểm tra các mục nhập trên bất kỳ máy nào cũng như tạo chúng theo lập trình.

Cú pháp cơ bản cho biểu thức mục nhập crontab là:

  • m = phút từ 0 đến 59
  • h = giờ từ 0 đến 23
  • d = ngày trong tháng từ 1 đến 31
  • mon = tháng từ 1 đến 12
  • dow = ngày trong tuần từ 0 đến 6. Số 0 là Chủ nhật.
  • Command = lệnh chạy.

Ví dụ: bạn cần chạy một lệnh thường xuyên để kiểm tra xem máy chủ mysql của bạn có chạy tốt hay không. Để làm cho lệnh chạy hàng giờ, hãy sử dụng cú pháp sau:

Điều này có nghĩa là nó sẽ chạy trên dấu chấm mỗi giờ. Nếu bạn chỉ muốn nó chạy lúc 1,42 sáng mỗi ngày, thì lệnh sẽ trở thành:

Ngoài ra, dấu phẩy có thể được sử dụng cho nhiều mục (chẳng hạn như 1,3,5) và dấu gạch nối có thể được sử dụng cho các phạm vi. Việc sử dụng đặc biệt của dấu hoa thị ở vị trí của một mục trong biểu thức cho biết mục đó chạy cho tất cả các giá trị của trường. (Dấu hoa thị trong trường giờ sẽ cho biết chạy trong mỗi giờ từ 0 – 23) Thẻ bắt đầu bằng # (#) trên một dòng cho biết nhận xét (có nghĩa là dòng mã đó sẽ không được thực thi).

Cuối cùng, dấu gạch chéo về phía trước sẽ cho biết giá trị bước. Ví dụ: cứ sau năm phút sẽ được nhập là * / 5 (kể từ thời điểm crontab được lưu và cron job được tạo). Nếu bạn chỉ sử dụng 5, sẽ chỉ chạy ở mốc năm phút.

Đối với ví dụ này:

  • 34: phút chạy từ 0 đến 59
  • 3: giờ, từ 0 đến 23
  • *: hai dấu hoa thị ở giữa cho biết hàng ngày (1 đến 31) và hàng tháng (1 đến 12)
  • 0: số 0 cuối cùng cho biết chủ nhật

Nhiệm vụ này sẽ chạy lúc 3:34 sáng hàng tháng, hàng tuần vào Chủ nhật.

Mã ngắn

Crontab cho phép bạn sử dụng một số mã ngắn để làm cho các mục cron của bạn dễ đọc hơn.

  • @reboot – Chạy một lần, khi khởi động
  • @yearly – Chạy mỗi năm một lần, 0 0 1 1 *.
  • @annually – giống như @yearly
  • @monthly – Chạy mỗi tháng một lần, 0 0 1 * *
  • @weekly – Chạy một lần một tuần, 0 0 * * 0
  • @daily – Chạy một lần một ngày, 0 0 * * *
  • @midnight – giống với @daily
  • @hourly – Chạy mỗi giờ một lần, 0 * * * *

Ví dụ:

Chỉnh sửa các mục cron với tư cách là một người dùng khác

Đôi khi bạn cần thêm crontab làm thư mục gốc. Ví dụ: để tự động gia hạn chứng chỉ Lets Encrypt SSL, bạn cần chạy tập lệnh gia hạn dưới dạng root. Để chỉnh sửa crontab dưới dạng thư mục gốc, chỉ cần thêm sudo trước lệnh:

Tương tự, bạn có thể lên lịch công việc cron với tư cách là một người dùng khác, bằng cách sử dụng -u:

Ví dụ: để chạy một công việc cron như www-data người dùng, sử dụng lệnh sau:

Xem lại hoạt động cron

Mặc dù bây giờ bạn đã được thiết lập để chạy các lệnh hoặc tập lệnh cụ thể, bạn có thể muốn đảm bảo rằng nó đã chạy. Được tích hợp sẵn trong cron là khi một lệnh được chạy, nó sẽ gửi email cho chủ sở hữu cron. Điều này có thể được thay đổi với MAILTO.

Thêm [email protected] sẽ gửi tất cả các báo cáo công việc cron đến một email được chỉ định. Biến này thường có thể được tìm thấy ở đầu màn hình chỉnh sửa crontab. Tuy nhiên, nếu nó không có ở đó, bạn có thể thêm biến và nó sẽ hoạt động như mong đợi.

Nhiều địa chỉ email có thể được phân tách bằng dấu phẩy. Nếu bạn cần một lệnh khác được gửi qua email ở nơi khác, bạn có thể thêm lệnh MAILTO ngay phía trên lệnh. Các lệnh sau mailto đó sẽ được gửi qua email đến địa chỉ mới. Nếu bạn đi MAILTO= trống, thông báo sẽ được gửi đến chủ sở hữu của mục nhập cron.

Ngoài ra, bạn có thể sử dụng toán tử chuyển hướng (>) để gửi đầu ra đến nơi cần thiết.

Ở trên sẽ chuyển hướng đầu ra đến /dev/null, mà không gửi email và loại bỏ đầu ra.

Nếu bạn muốn đảm bảo rằng công việc đã chạy và không muốn có email, bạn cũng có thể kiểm tra nhật ký cron. Trên hầu hết các hệ thống, việc truy cập nhật ký cron sẽ yêu cầu quyền của người dùng cấp trên. Nhật ký cron có thể được tìm thấy dưới /var/log. Tệp cron hoặc nhật ký hệ thống sẽ hiển thị nhật ký của các mục cron đã thực thi.

cron-tab-log

Cron có thể được hạn chế hơn nữa để cho phép sử dụng cụ thể và có thể thiết lập các giá trị mặc định. Với việc bổ sung đường ống và chuyển hướng, các mục cron có thể được thiết lập để thực hiện tất cả mọi việc. Cuối cùng, cron là một công cụ cung cấp cho bạn khả năng chạy các tác vụ khi rảnh rỗi và đảm bảo việc bảo trì định kỳ các bộ phận của hệ thống theo ý muốn của bạn.

Bài viết này có hữu ích không?

Previous articleHướng dẫn cho người mới bắt đầu để xem video HTML5 trong trình duyệt của bạn
Next articleHướng dẫn cho người mới bắt đầu sử dụng GoogleCL