Cách thiết lập cron trên hosting. Thiết lập cron dễ dàng trên Linux

Tôi đã nghe nhiều về việc Linux có một công cụ lập lịch tác vụ cron tiện dụng như thế nào. Tuy nhiên, tôi không có nhu cầu sử dụng nó và tôi không muốn hiểu cài đặt của nó... bảng điều khiển, rất nhiều chữ cái tiếng Anh... thật đáng sợ. Nhưng may mắn thay, nỗi sợ hãi của tôi đã vô ích - mọi thứ đều đơn giản từ những điều cơ bản. Bài viết sẽ xem xét cách thiết lập việc thực thi các tập lệnh của bạn theo lịch trình và để làm ví dụ, chúng tôi sẽ cài đặt “cuckoo”.

Đầu tiên, một chút về cách nó thường hoạt động.

Khi hệ thống khởi động, cron daemon sẽ khởi động. Nó có thể được kiểm soát (dừng/bắt đầu/kiểm tra trạng thái) bằng lệnh: sudo service cron (dừng/bắt đầu/trạng thái). Nhưng điều này hiếm khi cần thiết.

Bản thân cron daemon ngủ hầu hết thời gian và hơi mở mắt mỗi phút một lần để kiểm tra công việc tại thời điểm này. Nếu không có nhiệm vụ thì anh ta lại ngủ đông.

Các công việc được đặt trong các tệp có tên bằng tên người dùng và bản thân các tệp này nằm trong thư mục /var/spool/cron/crontabs. Thư mục được bảo vệ khỏi sự can thiệp từ bên ngoài và chỉ có siêu người dùng mới có thể truy cập được. Tuy nhiên, mỗi người dùng có thể thiết lập lịch trình cho các tác vụ của mình mà không cần biết mật khẩu gốc (siêu người dùng).

ĐẾN thiết lập cronNgười sử dụng thường xuyên chỉ loại:

Nếu bạn cần tạo một tác vụ cho người dùng khác, hãy khởi chạy nó bằng lệnh:

sudo crontab -u người dùng -e

Thay vì người dùng chúng tôi viết người dùng mong muốn, ví dụ như gốc.
Khi bạn khởi chạy lần đầu tiên, sẽ có một câu hỏi về trình chỉnh sửa... Tôi thích nano. Nó đơn giản và chạy mà không cần GUI.


Cú pháp của các nhiệm vụ rất đơn giản. Hãy xem một ví dụ từ ảnh chụp màn hình tung ra một con chim cu:

0 */1 * * * /home/zegi/bin/kuku

Có 2 trường chính trong tác vụ: 0 */1 * * * - cho biết thời điểm lệnh sẽ được kích hoạt. Và /home/zegi/bin/kuku là đường dẫn đến tập lệnh mô tả (các) lệnh.

Sẽ không có bất kỳ vấn đề nào với địa chỉ của tập lệnh (zegi là tên người dùng... đừng quên đặt địa chỉ của bạn). Nhưng chúng ta cần giải thích cách đặt thời gian cron để thực thi tập lệnh.

Tổng cộng chúng ta có 5 ô nhập, cách nhau bằng dấu cách.
1 - phút (các số từ 0 đến 59)
2 - giờ (từ 0 đến 23)
3 - ngày trong tháng (từ 1 đến 31)
4 - tháng trong năm (từ 1 đến 12... ví dụ tháng 2 là 2)
5 - ngày trong tuần (từ 1 đến 7. Tuần phương Tây được sử dụng, khi bắt đầu là Chủ nhật. tức là Sun-1, Mon-2, Tue-3, Wed-4, Thu-5, Fri-6, Sat - 7).

Mỗi ô phải được điền vào. Nếu bạn cần lệnh được thực thi hàng tháng thì hãy đặt * ở trường thứ 4. Điều tương tự cũng áp dụng cho các lĩnh vực khác.

Hãy quay lại ví dụ về con chim cu, khi tập lệnh chạy mỗi giờ. Để đặt tần số, nó được sử dụng / . Ví dụ: nếu bạn cần tác vụ được thực thi 5 phút một lần vào Thứ Hai, thì hãy đặt:

Nếu bạn cần thực hiện nhiệm vụ mỗi giờ, thì bạn sẽ phải đặt một phút cụ thể. Nếu bạn để lại dấu hoa thị (* */1 * * *), thì vương miện sẽ thực thi mỗi phút - vì các điều kiện được đáp ứng: nó đã kiểm tra tất cả 5 ô và giá trị của chúng tương ứng với thời gian hiện tại (phút - không thành vấn đề . Giờ - mỗi giờ, và không chỉ một số giờ nhất định ).
Dấu gạch chéo phải luôn được đặt trước dấu hoa thị. Ví dụ: chỉ định thực hiện mỗi phút bắt đầu từ ngày 30 bằng cách nhập 30/1 sẽ không hoạt động.

Nếu nhiệm vụ cần được thực hiện không phải theo chu kỳ mà nhiều lần, thì các giá trị được viết cách nhau bằng dấu phẩy.
Ví dụ: bạn cần hoàn thành một nhiệm vụ vào các ngày trong tuần vào lúc 12 giờ trưa và 6 giờ chiều. Sau đó nó sẽ trông như thế này:

* 12,18 * * 2,3,4,5,6

Khi bạn hoàn thành tác vụ chỉnh sửa, đừng quên lưu các thay đổi (Ctrl+O > enter) và sau đó bạn có thể thoát (Ctrl+x).

Cron nên thông báo là nó đã xuất hiện nhiệm vụ mới và anh ấy đã sẵn sàng thực thi nó, viết: “crontab: cài đặt crontab mới”.

Bạn có thể xem các tác vụ đã tạo (có thể bạn không làm gì cho mình nhưng quản trị viên mạng đã cấu hình thứ gì đó cho bạn) bằng lệnh:

Và cuối cùng bản thân tôi kịch bản chim cúc cu, mà chim cu gáy mỗi giờ:

#!/bin/bash
h=`ngày +%l`
trong khi [ $h -gt 0 ]
LÀM
chơi ~/kukushka.wav
h=$[$h-1]
xong

Bạn có thể tải xuống âm thanh chim cu bằng lệnh:

quên http://dl.dropbox.com/u/24844052/tuksik/kukushka.wav

Chơi được bao gồm trong gói sox. Trong Ubuntu bạn có thể cài đặt nó bằng lệnh.

Trong tài liệu của chúng tôi dành riêng cho Máy chủ Ubuntu Thỉnh thoảng, vấn đề thực hiện một số nhiệm vụ nhất định theo lịch trình được đặt ra. Để không phải lần nào cũng phải giải thích những điều giống nhau, chúng tôi quyết định tạo ra tài liệu này để giúp ích cho bạn. quản trị viên hệ thống làm chủ và sử dụng hiệu quả bộ lập lịch tác vụ trong Linux.

Trong Ubuntu Server, nó được sử dụng làm công cụ lập lịch tác vụ cron- lập lịch với giao diện dòng lệnh. Anh ấy là phần quan trọng hệ thống và bắt đầu hoạt động ngay sau khi cài đặt, thực hiện các tác vụ hệ thống khác nhau. Mục tiêu của chúng tôi là đưa nó vào phục vụ chúng tôi, đặc biệt vì nó không khó như chúng ta tưởng.

Có hai loại lịch trình cron: người dùng và hệ thống. Chúng khác nhau ở chỗ cái đầu tiên được tạo bởi người dùng và được thực thi có tính đến quyền của người dùng, cái thứ hai được sử dụng trong quản trị hoặc mục đích hệ thống và có thể được chạy như bất kỳ người dùng nào.

Để tạo hoặc thay đổi lịch tùy chỉnh, hãy nhập lệnh:

Crontab -e

Khi bạn khởi chạy nó lần đầu tiên, tiện ích sẽ nhắc bạn chọn một trình soạn thảo; chúng tôi khuyên bạn nên chọn mcedit(yêu cầu cài đặt mc) hoặc trình soạn thảo khác mà bạn biết cách làm việc.

Định dạng của các dòng lịch trình là:

lệnh phút giờ ngày tháng day_of_week lệnh

  • Phút- thời gian tính bằng phút từ 0 đến 59
  • Giờ- từ 0 đến 23
  • Ngày- ngày trong tháng từ 1 đến 31
  • Tháng- từ 1 đến 12 hoặc ký hiệu chữ cái tháng một-tháng mười hai
  • Ngày trong tuần- từ 0 đến 6 (0 - Chủ nhật) hoặc thứ bảy - chủ nhật
  • Đội- một chuỗi ở định dạng của trình thông dịch lệnh sẽ được thực thi, viết như sau đội1 && đội2để chạy nhiều lệnh liên tiếp.

Các giá trị phút, giờ, ngày có thể được xác định như sau:

  • Nghĩa- một số chỉ ngày hoặc giờ, cho phép ký tự đại diện * cho phép đầy đủ các giá trị
  • Nhiều giá trị- được phép chỉ định một số giá trị được phân tách bằng dấu phẩy, ví dụ 2,14,22
  • Phạm vi giá trị- được biểu thị bằng dấu gạch nối, ví dụ 2-10
  • Bước giá trị- được biểu thị thông qua một phân số, mẫu số của nó là một bước, ví dụ */3 - mọi giá trị thứ ba 0, 3, 6, 9, v.v. Tử số phải là một phạm vi giá trị hoặc dấu hoa thị.

Hãy xem xét mục ví dụ sau:

0 8-19/2 * * 1 /nhà/ivanov/kiểm tra

Điều đó có nghĩa là cứ sau mỗi hai giờ từ 8 đến 19 (8, 10,12,14,16) vào Thứ Hai, hãy chạy tập lệnh kiểm tra trong thư mục chính của Ivanov.

Chúng tôi muốn cảnh báo ngay cho bạn về một lỗi phổ biến: khi biểu thị việc thực thi định kỳ, tất cả các ngày phải được chỉ định rõ ràng, dấu hoa thị cho biết đầy đủ các giá trị chứ không phải sự vắng mặt của chúng. Ví dụ: nếu bạn cần thực thi một tập lệnh nhất định mỗi giờ từ 10 đến 15 thì điều đó sẽ không chính xác:

* 10-15 * * * /nhà/ivanov/kiểm tra

Dòng này sẽ chạy tập lệnh mỗi phút trong khoảng từ 10 đến 15 giờ. Nó sẽ đúng:

0 10-15 * * * /home/ivanov/test

Mục nhập này sẽ cho phép tập lệnh chạy vào đầu mỗi giờ trong phạm vi được chỉ định.

Ngoài ngày, bạn có thể sử dụng một số chuỗi đặc biệt:

  • @khởi động lại- thực hiện lệnh khi khởi động lại
  • @hàng năm hoặc @hàng năm- thực thi vào ngày 1 tháng 1, tương tự như mục: " 0 0 1 1 * "
  • @hàng tháng- thực hiện vào ngày 1 hàng tháng, tương tự như " 0 0 1 * * "
  • @hàng tuần- biểu diễn vào Chủ nhật hàng tuần, tương đương với " 0 0 * * 0 "
  • @hằng ngày hoặc @nửa đêm- mỗi ngày vào lúc nửa đêm" 0 0 * * * "
  • @hourly- mỗi giờ một lần," 0 * * * * "

Vì vậy, để thực thi tập lệnh của chúng tôi hàng ngày vào mỗi nửa đêm, bạn có thể viết:

@nửa đêm /nhà/ivanov/kiểm tra

Hoàn thành việc tạo lịch trình, lưu tệp và thoát khỏi trình chỉnh sửa. Lịch trình tùy chỉnh sẽ được lưu trong /var/spool/cron/crontabs dưới cái tên người dùng hiện tại.

Một tập tin được cung cấp cho các nhiệm vụ hệ thống và quản trị /etc/crontab cú pháp của các mục trong đó khác nhau ở sự hiện diện Giá trị bổ sung- người dùng thay mặt họ thực hiện nhiệm vụ:

phút giờ ngày tháng day_of_week lệnh của người dùng

Một ví dụ về một mục như vậy:

0 19 * * 1-5 gốc /etc/backup

Theo đó vào lúc 19h từ thứ Hai đến thứ Sáu kịch bản sẽ được phát động /etc/sao lưu thay mặt người dùng nguồn gốc.

Tệp này cũng chứa lịch trình hệ thống, vì vậy việc chỉnh sửa nó cần được thực hiện một cách thận trọng. Tất cả các nhiệm vụ hệ thống và quản trị nên được đặt ở đó.

Như chúng ta thấy cron Nó khá dễ sử dụng nhưng đồng thời mang lại nhiều cơ hội để thiết lập lịch trình trong Ubuntu Server. Chúng tôi hy vọng bài viết này sẽ giúp quản trị viên làm chủ được công cụ này.

Cron (vương miện), Crontab (crontab), Quản lý công việc- tất cả những người tham gia vào việc “xây dựng địa điểm” đã nhiều lần nghe thấy những cái tên này. Vậy Cron là gì? Làm thế nào để làm việc với nó? Tại sao bạn cần Cron và cách cấu hình nó đúng cách? Chúng ta sẽ xem xét tất cả những câu hỏi này ngày hôm nay.

Điều đầu tiên tôi muốn lưu ý ngay: Cron, Crontab, Quản lý công việc- tất cả đều giống nhau, đừng nhầm lẫn với nhiều cái tên khác nhau.

Trong thực tế, bất kỳ quản trị viên web nào cũng luôn cần phải chạy một số tác vụ theo lịch trình. Những thứ kia. Bạn chỉ cần viết lệnh bạn cần để thực hiện một số nhiệm vụ trong thời gian quy định, và thế là xong. Sau đó, mọi thứ sẽ diễn ra mà không cần sự tham gia của bạn - một cách tự động và tốt nhất là vào thời điểm bạn cần.

Ví dụ: bạn cần gửi thông báo định kỳ cho đối tác của mình e-mail. Hoặc bạn muốn đặt lời chào hoặc nhắc nhở tự động. Hoặc bạn có một thư mục các trang web và bạn muốn tần số quy địnhđã kiểm tra tập lệnh thư mục liên kết ngược vân vân. Tất cả các tác vụ này có thể được tự động hóa dễ dàng bằng cách giao phó nó cho Cron hoặc như họ cũng nói - Bảng kế hoạch. Và có những kịch bản trong đó hoạt động binh thương Cron là phải.

Hầu như tất cả các nhà cung cấp dịch vụ lưu trữ hiện đại đều cung cấp chức năng làm sẵn Bảng kế hoạch. Nếu trên Hosting không có chức năng như vậy thì tốt hơn hết bạn không nên liên hệ với công ty Hosting đó. Cron ngày nay không còn là thứ xa xỉ nữa, và nếu Hosting không cung cấp công cụ lập lịch tác vụ trong gói dịch vụ thì tốt hơn hết bạn nên tìm công ty khác, có thể họ sẽ không có những chức năng quan trọng khác.

Vì vậy hãy nhìn vào mọi thứ hành động thiết thực sử dụng cài đặt Cron bằng ví dụ về cPane l (bảng điều khiển trang) của Nga Công ty lưu trữ Hudson. Tại sao chính xác Hudson? Thật đơn giản - trang web của tôi hoạt động ở đây và tôi thực sự thích Dịch vụ lưu trữ này: gói đầy đủ nhiều nhất dịch vụ có thể với một mức giá rất hợp lý.

Mặc dù thiết lập Bảng kế hoạch xảy ra giống nhau ở mọi nơi.

Đi tới bảng điều khiển trang web, trong trong trường hợp nàyĐây là cPanel (có những cái khác). Quyền truy cập được cung cấp cho bạn ngay sau khi mua Lưu trữ, hãy đi xuống bên dưới và tìm phần này, Công cụ bổ sung:

Chúng tôi tìm thấy trong phần này Quản lý công việc và bấm vào nó. Menu này đôi khi được gọi là Cron Panel. Đây là cách Cron được đặc trưng:

"Trình lập lịch tác vụ cho phép bạn chạy các lệnh vào một thời điểm nhất định mà không cần sự tham gia của bạn. Điều này cho phép bạn tự động hóa công việc định kỳ thường xuyên. Trình lập lịch tác vụ rất linh hoạt và cho phép bạn tự động hóa việc thực thi bất kỳ lệnh nào bạn muốn chạy. Ví dụ: , bạn có thể yêu cầu người lập lịch xóa Hồ sơ tạm thời mỗi tuần để chúng không chiếm quá nhiều dung lượng trên đĩa của bạn."

Có hai tùy chọn để quản lý Crohn's để bạn lựa chọn:

Tiêu chuẩn và Nâng cao (kiểu Unix), chúng ta hãy nhìn vào từng người trong số họ.

Lựa chọn đầu tiên. Nhấn vào nút Standard, cửa sổ cài đặt tác vụ mở ra:

Như bạn có thể thấy, mọi thứ ở đây rất đơn giản. Bạn chỉ cần đặt thời gian thực hiện lệnh bằng cách cho biết trong các trường thích hợp khi nào lệnh sẽ chạy và vào thời điểm nào: phút, Giờ, Ngày, Tháng, Ngày trong tuần. Và tất nhiên, hãy nhập chính lệnh khởi chạy vào trường: Lệnh chạy.

Các giá trị có thể được viết thủ công (ở trường bên trái) hoặc sử dụng danh sách thả xuống (mũi tên ở bên phải).

Hãy tìm hiểu những gì chúng tôi đã viết ở đây. Và chúng tôi đã viết nhiệm vụ tiếp theo: chạy lệnh để thực thi:
/usr/bin/php /home/freeman/domains/public_html/cron/new_day.php
cứ sau 30 phút, cứ sau 6 giờ, mỗi ngày trong tháng Giêng nếu rơi vào thứ Hai.

Sau khi cài đặt công việc, nhấp vào nút Thêm công việc Cron mới.

Không rõ bạn viết gì? :) Hãy xem tùy chọn thứ hai và sau đó tôi sẽ giải thích chi tiết hơn. Chúng tôi quay lại trang trước.

Sự lựa chọn thứ hai. Nhấn nút Nâng cao (kiểu Unix), cửa sổ cài đặt tác vụ sẽ mở ra:

Tôi thích tùy chọn này để thiết lập nhiệm vụ cho Krohn tốt hơn. Và tuy gọi là Advanced nhưng theo mình nó đơn giản và tiện lợi hơn.

Ở đây, giống như trường hợp đầu tiên, bạn cần cho biết khi nào lệnh sẽ được khởi chạy, chúng tôi cũng cho biết: phút S, Giờ S, Ngày, Tháng, Ngày trong tuần và bản thân nhiệm vụ thực thi tại hiện trường Đội. Sau đó, nhấp vào nút Thêm Cronjob. Nhiệm vụ đã được thiết lập. Trang đang được cập nhật:

Và bạn có thể thêm một nhiệm vụ mới bằng cách lặp lại toàn bộ quy trình một lần nữa. Bạn có thể xóa một nhiệm vụ bằng cách nhấp vào dấu thập bên cạnh nhiệm vụ ở bên phải.

Có một tham số tùy chọn nữa nhưng tôi khuyên bạn nên chỉ định nó: tham số này địa chỉ email. Một báo cáo về việc thực hiện lệnh sẽ được gửi đến địa chỉ này. Trường này là tùy chọn, nhưng tốt hơn hết bạn nên nhập địa chỉ để biết vấn đề, nếu có sự cố xảy ra, Kron sẽ thông báo cho bạn về điều đó bằng một lá thư và nếu lá thư đến tay trống thì mọi thứ đều ổn!

Chúng ta đã viết gì ở đây? Chạy lệnh lúc 11 phút, cứ 2 giờ một lần, hàng ngày, hàng tháng, các ngày thứ 1, 3, 5, 7 trong tuần.

Trong trường lựa chọn: phút cho biết phút (hoặc số phút) mà nhiệm vụ sẽ được khởi chạy tại hiện trường Giờ cho biết giờ (hoặc giờ) mà tác vụ sẽ được thực hiện, cũng như (các) ngày và tháng, trong mỗi trường, bạn có thể chỉ định cả thời gian và khoảng thời gian cụ thể.

Ví dụ: bạn có thể chỉ định không chỉ 11 phút mà còn 11-15 (khoảng thời gian), điều này có nghĩa là tác vụ sẽ chạy sau mỗi 11, 12, 13, 14, 15 phút. Hoặc chỉ định số phút cụ thể, ví dụ: 11, 14, 18 - điều này có nghĩa là nhiệm vụ sẽ được khởi chạy vào lúc 11, 14 và 18 phút. Bạn cũng có thể sử dụng dấu hiệu * (dấu hoa thị)- biểu thị mỗi . Nếu bạn đặt * (dấu hoa thị) trong trường Phút, thì tác vụ sẽ được khởi chạy mỗi phút, tức là. 60 lần một giờ.

Trong mỗi trường, bạn có thể chỉ định cả thời gian và khoảng thời gian cụ thể, đồng thời sử dụng dấu hoa thị.

Ghi */2 có nghĩa: cứ sau 2 giờ. Tất cả các biến thể bản ghi này áp dụng cho tất cả các trường ( phút S, Giờ S, Ngày, Tháng, Ngày trong tuần) khi chỉ định nhiệm vụ cho Kron. Bạn hiểu rằng có thể có hàng triệu lựa chọn, chạy nhiệm vụ để thực thi, thậm chí từng phút trong suốt cả năm. Tất nhiên, nhu cầu như vậy hầu như không bao giờ nảy sinh, nhưng về mặt lý thuyết là có khả năng như vậy.

Và cũng nên nhớ rằng một số trang web Lưu trữ áp đặt các hạn chế đối với việc chạy Crohn, chẳng hạn như không quá 3 - 10 lần mỗi giờ. Tại sao? Điều này tạo ra một tải khá đáng chú ý trên máy chủ. Nếu vi phạm, tài khoản của bạn có thể bị chặn.

Bây giờ hãy tìm hiểu cách điền vào trường Lệnh chạy(trong tùy chọn đầu tiên) hoặc Command (trong tùy chọn thứ hai).

Nhiệm vụ được chỉ định như sau.

Trước hết, bạn chỉ ra đường dẫn đến PHP trên máy chủ của bạn, trên máy chủ của tôi đường dẫn là /usr/bin/php, đường dẫn của bạn có thể khác, hãy kiểm tra với quản trị viên máy chủ của bạn, sau đường dẫn đến PHP đặt một khoảng trắng và ghi đường dẫn nội bộ đầy đủ vào tệp mà Cron sẽ chạy. Giả sử tôi cần Cron để chạy tệp mail.php, biết đường dẫn bên trong của tệp, tôi viết như sau:

public_html/cron/mail.php

những thứ kia. trong thư mục gốc public_html, có một thư mục cron chứa tệp mail.php và lệnh hoàn chỉnh để chạy tệp mail.php sẽ như sau:

/usr/bin/php /public_html/cron/mail.php

Trên các trang web lưu trữ khác nhau, đường dẫn đến PHP có thể khác nhau và được viết khác nhau, Thư mục gốc vị trí trang web cũng không phải lúc nào cũng như vậy công khai_html, vậy nếu không Ví dụ cụ thể hồ sơ nhiệm vụ dành cho Crohn, tốt hơn hết bạn nên hỏi quản trị viên về vấn đề này, mô tả kết quả mà bạn muốn nhận được. Tốt

Rất thường xuyên trên các hệ thống giống Linux, bạn có thể cần phải tự động hóa một số quy trình thường lệ. Bộ lập lịch đặc biệt được sử dụng cho việc này. Một trong những cái nổi tiếng nhất trong số đó là Cron, cài đặt của nó sẽ được thảo luận trong bài viết này.

Cron là gì?

Tên của chương trình có nguồn gốc từ tiếng Hy Lạp “chronos”, có nghĩa là thời gian. Điều này thực sự hợp lý. Nhiệm vụ của con quỷ là thực thi các lệnh được viết cho nó vào những thời điểm nhất định. Bản thân quá trình thực hiện dựa trên việc kiểm tra các bảng vương miện và so sánh chúng với thời gian.

tập tin crontab

Yếu tố quan trọng nhất của việc thiết lập Cron là tập tin cấu hình crontab. Nó chứa các lệnh thực thi và đường dẫn đến tập lệnh. Tất cả đều chạy như siêu người dùng. Vì chúng nằm trong thư mục /etc/cron.d nên các tệp này phải được cấu hình ở đó.

Cho mỗi người dùng cá nhân Hệ thống sử dụng tệp crontab của riêng nó.

Các bản phân phối Linux khác nhau sử dụng các thư mục khác nhau để lưu trữ cài đặt tùy chỉnh. Đối với RedHat đây là var / ống chỉ/cron. Trên Debian và Ubuntu, đây sẽ là var/spool/cron/crontabs. Và var/spool/cron/tabs trong SUSE.

Danh sách lệnh quản lý crontab

Cron có một bộ lệnh đặc biệt có thể được sử dụng để điều khiển bộ lập lịch. Chúng cần được sử dụng cùng với crontab. Đây là một danh sách nhỏ:

  • -u tên người dùng. Đặt người dùng có nhiệm vụ và cài đặt sẽ được xử lý hành động hơn nữa. Nếu bạn bỏ qua chìa khóa đã cho, người dùng mặc định sẽ được đặt.
  • -l. Hiển thị danh sách nhiệm vụ hiện tại.
  • -e. Khởi chạy trình chỉnh sửa cho bộ lập lịch tác vụ.
  • -r. Xóa tất cả các nhiệm vụ hiện có khỏi danh sách.

Định dạng nhiệm vụ

Như đã đề cập ở trên, việc thiết lập Cron bao gồm việc chỉ định các lệnh trong tập tin đặc biệt. Nó có vẻ như mục nhập đơn giản, gồm sáu cột:

  • đầu tiên cho biết số phút. Phạm vi khả dụng là từ 0 đến 59. Bạn có thể sử dụng nhiều giá trị, phạm vi và Ký hiệu đặc biệt;
  • cột thứ hai - giờ. Có thể sử dụng các giá trị từ 0 đến 23;
  • ngày tiếp theo. Tại đây bạn có thể chỉ định một số từ 1 đến 31;
  • thứ tư là một tháng. Giá trị tối thiểu 1, tối đa - 12;
  • thứ năm - tuần. 0 hoặc 7 tương ứng với Chủ Nhật;
  • Lệnh cuối cùng là lệnh đó.

Như đã đề cập, bạn có thể chỉ định các ký tự đặc biệt, "*" hoặc "/" trong tệp. Ví dụ: mục nhập như vậy là 23 */2 *** echo “Run” có nghĩa là cứ sau mỗi giờ chẵn 23 phút, dòng chữ “Run” sẽ được hiển thị.

Tính năng của file crontab

Khi thiết lập Cron, bạn cần nhớ rằng nó có các thuộc tính cụ thể cần được tính đến khi định cấu hình:

  • mọi tập tin đều phải kết thúc dòng trống, nếu không thì đoạn cuối có thể bị bỏ qua và đôi khi là toàn bộ tệp;
  • các tập tin nằm trong các thư mục có dấu chấm trong tên của chúng cũng sẽ bị bộ lập lịch bỏ qua;
  • Bạn có thể sử dụng ký hiệu bảng Anh “#” trong tệp cấu hình. Chúng được sử dụng để đánh dấu các dòng có nhận xét. Điều này rất hữu ích cho việc mô tả các nhiệm vụ và lệnh theo lịch trình.

Các biến bổ sung

Khi thiết lập Cron, bạn có thể sử dụng nó trong các lệnh ý nghĩa đặc biệt và các khoản giảm. Ví dụ: bạn có thể sử dụng danh sách sau để chỉ định ngày trong tuần:

  • nắng - Chủ nhật;
  • thứ hai - thứ hai;
  • tuệ - thứ ba;
  • thứ tư - môi trường;
  • thu - thứ năm;
  • thứ Sáu - Thứ Sáu;
  • thứ bảy - thứ bảy.

Ngoài ra còn có các giá trị chữ cái riêng biệt cho các tháng - jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec.

Ngoài ra còn có các biến riêng biệt để cấu hình Cron có thể thay thế toàn bộ dòng lệnh:

  • @khởi động lại. Lệnh sẽ chạy mỗi khi bạn khởi động máy tính;
  • @hàng năm. Nhiệm vụ này sẽ được ra mắt mỗi năm một lần. Ký hiệu tương đương của nó ở dạng số có thể là: 0 0 1 1 *. Từ đồng nghĩa của nó cũng có thể được viết là @annual;
  • @hàng tháng. Như bạn có thể đoán từ tên, biến này chạy lệnh mỗi tháng một lần. Tương tự số của nó là 0 0 1 * *;
  • @hàng tuần. Biến này sẽ chạy hàng tuần;
  • @hằng ngày. Một lần một ngày;
  • @nửa đêm. Buổi ra mắt sẽ diễn ra vào lúc nửa đêm;
  • @hourly. Mỗi giờ.

Thiết lập Cron trên Centos 7

Bản thân quá trình cài đặt và cấu hình không khác nhiều so với các quy trình tương tự khác Bản phân phối Linux. Trước khi thiết lập Cron trên Centos, bạn cần cài đặt gói cronie trên hệ thống của mình. Bạn có thể thực hiện việc này bằng lệnh yum install cronie. Để tạo một tệp có hướng dẫn, bạn cần chạy crontab -e trong terminal. Tất cả Cài đặt hệ thống Các tệp cron sẽ được lưu trữ tại /var/spool/cron/username.

Một số ví dụ hữu ích để tạo các tác vụ lặp lại thường xuyên

Cron có thể được cấu hình để đáp ứng hầu hết mọi nhu cầu của bất kỳ người dùng nào.

  • 00 09-17 * * 1 - 5 /đường dẫn/ đến đội/ vương miện. Lệnh này sẽ tự động thực hiện hành động đã lên lịch vào mỗi ngày làm việc từ 9 đến 5 phút đầu tiên;
  • 00 9.17 * * * /đường dẫn/ tới đội/ vương miện. Trong ví dụ này, lệnh được thực thi hai lần một ngày. Chuyến đầu tiên lúc 9 giờ, chuyến thứ hai lúc 5 giờ. Dấu “*” cho biết lệnh sẽ được thực thi hàng ngày, tháng, năm;
  • Ngoài ra, đừng quên các biến tượng trưng. Ví dụ: @monthly sẽ chạy tác vụ hàng tháng vào phút đầu tiên của giờ đầu tiên của ngày đầu tiên. Và @daily sẽ được ra mắt hàng ngày.

GIỜ PHÚT DOM THỨ HAI DOW CMD

Bảng: Các trường Crontab và phạm vi hợp lệ (Cú pháp Crontab của Linux)

1. Lên lịch công việc trong một thời gian nhất định

Cơ sở của việc sử dụng cron là thực hiện các tác vụ trong thời gian nhất định như hình dưới đây. Tập lệnh sao lưu đầy đủ này sẽ chạy vào lúc 8:30 sáng ngày 10 tháng 6.

Xin lưu ý rằng trường thời gian sử dụng định dạng 24 giờ nên 8 giờ sáng là 8, 8 giờ tối là 20 giờ.

30 08 10 06 * /home/developer/full-backup

  • 30 – 30 phút
  • 08 – 08 giờ sáng
  • Ngày 10 – 10
  • * - Mỗi ngày trong tuần

2. Lên lịch hoàn thành các nhiệm vụ thường xuyên hơn (ví dụ: hai lần một ngày)

Kịch bản sau đây sử dụng bổ sung hỗ trợ hai lần một ngày mỗi ngày. Ví dụ này thực hiện sao lưu gia tăng vào lúc 11:00 và 16:00 mỗi ngày. Các giá trị được phân tách bằng dấu phẩy trong trường cho biết lệnh sẽ được thực thi tại mỗi thời điểm được chỉ định.

00 11.16 * * * /home/developer/bin/incremental-backup

00 – 0 phút (bắt đầu giờ) 11, 16 – 11 và 16 giờ * - hàng ngày * - hàng tháng * - hàng ngày trong tuần

3. Lên lịch làm việc trong một khoảng thời gian nhất định (ví dụ: chỉ vào các ngày trong tuần)

Nếu bạn muốn các quy trình chạy mỗi giờ vào một khoảng thời gian cụ thể, hãy sử dụng cách sau.

Quy trình cron cho mỗi ngày trong giờ làm việc

Ví dụ này kiểm tra trạng thái cơ sở dữ liệu hàng ngày (kể cả cuối tuần) trong giờ làm việc từ 9 giờ sáng đến 6 giờ chiều.

00 09-18 * * * /home/developer/bin/check-db-status

00 - 0 phút (đầu giờ) 09-18 – 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 (giờ) * - hàng ngày * - hàng tháng * - hàng ngày trong tuần tuần

Quy trình cron cho mỗi ngày làm việc trong giờ làm việc

Ví dụ này kiểm tra trạng thái của cơ sở dữ liệu vào mỗi ngày trong tuần (trừ thứ bảy và chủ nhật) từ 9 giờ sáng đến 6 giờ chiều.

00 09-18 * * 1-5 /home/ramesh/bin/check-db-status

00 - 0 phút (đầu giờ) 09-18 – 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 (giờ) * - hàng ngày * - hàng tháng 1-5 - Thứ Hai, Thứ Ba, Thứ Tư, Thứ Năm và Thứ Sáu (hàng tuần)

4. Làm thế nào để xem các mục Crontab?

Xem các tập tin Crontab hiện tại của người dùng.

Để xem các tập tin crontab-l của bạn từ phía trên tài khoản unix, hãy làm như sau.

Nhà phát triển@dev-db$ crontab -l @yearly /home/developer/annual-maintenance */10 * * * * /home/developer/check-disk-space

Xem các mục crontab gốc

Đăng nhập với tư cách người dùng root (su - root) và chạy crontab-l như hiển thị bên dưới.

Root@dev-db# crontab -l không có crontab cho root

Để xem tập tin của người dùng khác, hãy đăng nhập bằng root và sử dụng -u (tên người dùng) -l như hiển thị bên dưới.

Root@dev-db# crontab -u tên người dùng -l @monthly /home/username/monthly-backup 00 09-18 * * * /home/username/check-db-status

5. Chỉnh sửa mục crontab như thế nào?

Chỉnh sửa các mục cron của người dùng hiện tại.

Để chỉnh sửa các mục, hãy sử dụng cronab -e như hiển thị bên dưới. Theo mặc định, các mục crontab hiện tại của người dùng sẽ được chỉnh sửa.

Developer@dev-db$ crontab -e @yearly /home/developer/centos/bin/annual-maintenance */10 * * * * /home/developer/debian/bin/check-disk-space ~ "/tmp/crontab .XXXXyjWkHw" 2L, 83C

Khi bạn lưu file, nó sẽ lưu crontab và hiển thị thông báo sau cho bạn biết rằng crontab đã được sửa đổi thành công.

~ "crontab.XXXXyjWkHw" 2L, 83C viết crontab: cài đặt crontab mới

Chỉnh sửa các mục crontab gốc

Vào người dùng root(su - root) và thực hiện crontab -e như hình bên dưới.

Root@dev-db# crontab -e

Chỉnh sửa mục crontab của người dùng khác

Để chỉnh sửa mục nhập crontab của người khác Người dùng Linux, đăng nhập bằng root và sử dụng -u (tên người dùng) -e như hiển thị bên dưới.

Root@dev-db# crontab -u tên người dùng -e @monthly /home/username/fedora/bin/monthly-backup 00 09-18 * * * /home/username/ubuntu/bin/check-db-status ~ ~ ~ "/tmp/crontab.XXXXyjWkHw" 2L, 83C

6. Thực thi cron mỗi phút

Lý tưởng nhất là bạn có thể không cần lên lịch chạy cron mỗi phút. Nhưng hiểu ví dụ này sẽ giúp bạn hiểu các ví dụ khác được mô tả trong bài viết này.

Bash * * * * * CMD

* - có nghĩa là một đơn vị có thể - nghĩa là mỗi phút, mỗi giờ trong suốt cả năm. Ngoài ra, sử dụng * trực tiếp sẽ nhiều hơn chức năng hữu ích trong các ví dụ sau.

Chỉ định */5 trong trường phút có nghĩa là cứ 5 phút một lần. Chỉ định 0-10/2 trong trường phút có nghĩa là cứ 2 phút một lần trong 10 phút đầu tiên. Như vậy, quy ước này có thể được sử dụng trong cả 4 lĩnh vực.

7. Chạy các tác vụ Cron nền cứ sau 10 phút

Sử dụng cách sau nếu bạn muốn kiểm tra dung lượng ổ đĩa của mình sau mỗi 10 phút.

*/10 * * * * /home/ramesh/check-disk-space

Tác vụ này chạy lệnh kiểm tra đĩa được chỉ định 10 phút một lần trong một năm. Nhưng có thể bạn chỉ cần thực hiện kiểm tra trong giờ làm việc hoặc ngược lại. Các ví dụ trên cho thấy cách thực hiện việc này.

Thay vì chỉ định các giá trị trong 5 trường, chúng ta có thể chỉ định chúng bằng cách sử dụng từ khóa như hình dưới đây.

Hiện hữu điều kiện đặc biệt, khi thay vì 5 trường, bạn có thể sử dụng @ và sau đó là từ khóa - chẳng hạn như khởi động lại, nửa đêm, hàng năm, hàng giờ.

Từ khóa đặc biệt của Cron và ý nghĩa của chúng

8. Lên lịch làm việc vào phút đầu tiên của mỗi năm bằng cách sử dụng @yearly

Nếu bạn muốn cron job chạy vào những phút đầu tiên hàng năm, bạn có thể sử dụng từ khóa @yearly như hình bên dưới. Trong trường hợp này, hệ thống sẽ thực hiện hàng năm BẢO TRÌ, sử dụng tập lệnh bảo trì hàng năm vào lúc 00:00 ngày 1 tháng 1 hàng năm.

@yearly /home/developer/red-hat/bin/annual-maintenance

9. Chạy task hàng tháng bằng từ khóa @monthly

Nó tương tự như @yearly ở trên. Nhưng lệnh được thực thi hàng tháng. Lệnh sẽ thực hiện sao lưu vào lúc 00:00 ngày đầu tiên hàng tháng.

@hàng tháng /home/ramesh/suse/bin/tape-backup

10. Chạy tác vụ hàng ngày bằng @daily

Sử dụng từ khóa @daily sẽ tạo file nhật ký hàng ngày để xóa nhật ký vào lúc 00:00 hàng ngày.

@daily /home/developer/arch-linux/bin/cleanup-logs "ngày bắt đầu"

11. Làm cách nào để chạy lệnh Linux sau mỗi lần khởi động lại bằng @reboot?

Sử dụng từ khóa @reboot sẽ thực thi lệnh được chỉ định mỗi lần sau khi hệ thống khởi động.

@rebootCMD

13. 12. Làm cách nào để tắt/chuyển hướng thư đi của Crontab bằng từ khóa MAIL?

Theo mặc định, crontab gửi đầu ra của tác vụ tới người dùng đã cài đặt tác vụ. Nếu bạn muốn chuyển hướng chúng đến người dùng khác, hãy thêm hoặc cập nhật biến MAIL trong crontab như hiển thị bên dưới.

Developer@dev-db$ crontab -l MAIL="developer" @yearly /home/developer/annual-maintenance */10 * * * * /home/developer/check-disk-space

Nếu bạn muốn ngăn hoàn toàn việc gửi thư, tức là ngừng gửi tệp đầu ra crontab, hãy thêm hoặc cập nhật biến MAIL trong crontab như hiển thị bên dưới.

13. Cách chạy công việc Cron Linux mỗi giây bằng Crontab

Bạn không thể đặt cron chạy mỗi giây. Bởi vì đơn vị tối thiểu thực thi cron – phút. Trong trường hợp bình thường, không cần phải chạy thực thi cron mỗi giây.

14. Chỉ định biến PATH trong Crontab

Trong tất cả các ví dụ trên chúng tôi đã chỉ ra đường dẫn tuyệt đối Lệnh Linux hoặc tập lệnh shell sẽ được thực thi.

Ví dụ: thay vì chỉ định /home/developer/tape-backup , nếu bạn chỉ muốn chỉ định tape-backup , hãy thêm đường dẫn /home/developer vào biến PATH trong crontab như hình dưới đây.

Developer@dev-db$ crontab -l PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/developer @yearly Annual-maintenance */10 * * * * check-disk-space

15. Cài đặt Crontab từ file Cron

Thay vì chỉnh sửa trực tiếp tập tin crontab bạn có thể thêm tất cả các mục vào tệp cron. Nếu tệp có các mục này, bạn có thể kết xuất hoặc cài đặt chúng vào cron như hiển thị bên dưới.

Lưu ý: Thao tác này sẽ tạo tệp cron-file.txt trong crontab của bạn, tệp này sẽ xóa các mục nhập cron trước đó. Vì vậy hãy cẩn thận khi tải các mục cron từ cron-file.txt:

dev@dev-db$ crontab -l không có crontab dành cho nhà phát triển $ cat cron-file.txt @yearly /home/developer/annual-maintenance */10 * * * * /home/developer/check-disk-space dev@dev -db$ crontab cron-file.txt dev@dev-db$ crontab -l @yearly /home/developer/annual-maintenance */10 * * * * /home/developer/check-disk-space