Làm cách nào để đặt thời gian trong cron. Chỉ định biến PATH trong Crontab. Một số ví dụ hữu ích để tạo các tác vụ lặp lại thường xuyên

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 qua email. 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

Bản gốc: Sử dụng bộ lập lịch cron trên hệ thống Linux
Tác giả: Rares Aioanei
Ngày xuất bản: 29 tháng 9 năm 2011
Bản dịch: A. Krivoshey
Ngày dịch: Tháng 11 năm 2011

1. Giới thiệu

Nếu bạn đã có một số kinh nghiệm hệ thống Quản trị Linux, thì bạn nên biết cron là gì và nó dùng để làm gì. Nếu bạn mới bắt đầu làm việc với Linux thì kiến ​​thức này sẽ hữu ích cho bạn. Ngay cả khi bạn đã học cách sử dụng cron, bài viết này sẽ giúp bạn nâng cao kiến ​​thức của mình.
Cái tên cron xuất phát từ Cronos, hiện thân của thời gian trong tiếng Hy Lạp cổ đại. Và đây là một cái tên được lựa chọn hợp lý, vì mục đích chính của cron là giúp lập lịch trình. Các nhiệm vụ khác nhau, mà hệ thống phải thực thi tại một thời điểm nhất định. Nếu bạn đã sử dụng Windows, có lẽ bạn đã phải tìm hiểu kỹ về tiện ích Scheduled Tasks. Nhìn chung, mục đích của các chương trình là tương tự nhau nhưng cách thực hiện lại khác nhau. Cron dành cho những nhiệm vụ nghiêm túc quản trị hệ thống và có tính linh hoạt cao hơn. Một ví dụ về một vấn đề thực sự là hỗ trợ. Bạn có muốn sao lưu dữ liệu theo cách thủ công trên hàng trăm máy không? Tôi nghĩ không có. Bạn chỉ cần viết một tập lệnh đơn giản bằng rsync, lên lịch chạy nó, nói hàng ngày và quên nó đi. Tất cả những gì cần thiết trong tương lai là thỉnh thoảng kiểm tra nhật ký. Một số thậm chí còn sử dụng cron để nhắc họ về các sự kiện cá nhân quan trọng, chẳng hạn như sinh nhật. Nhưng cron chỉ là một daemon chạy các công việc bạn chỉ định. Có tiện ích nào giúp chỉnh sửa/thêm/xóa những tác vụ này không? Tất nhiên là có, và nó được gọi là crontab (từ bảng cron). Tuy nhiên, chúng tôi sẽ tiến hành tuần tự và bắt đầu với quá trình cài đặt.

2. Cài đặt cron

Hầu hết các bản phân phối đều sử dụng Vixie Cron và một số công cụ phái sinh khác làm cách triển khai cron mặc định và đó là những gì chúng tôi sẽ đề cập trong bài viết này. Ngoài ra, hầu hết tất cả các bản phân phối đều đã được cài đặt sẵn cron, vì nó rất dễ sử dụng. phần quan trọng Hệ thống Linux. Mặc dù Người sử dụng thường xuyên, theo quy định, không bao giờ làm việc trực tiếp với nó, hệ thống và nhiều ứng dụng sử dụng cron ( ví dụ tốt là bản cập nhật định kỳ của cơ sở dữ liệu trang man). Một ngoại lệ đáng chú ý là Gentoo, nơi bạn phải cài đặt vixie-cron theo cách thủ công và thêm nó vào runlevel mặc định. Trên Arch, Debian, Slackware, Ubuntu, Fedora và OpenSUSE, cron được cài đặt theo mặc định và tự động khởi động khi hệ thống khởi động. Chúng tôi hy vọng bạn sẽ xem lại các trang cron và crontab man, vì nhiều bản phân phối sử dụng các phiên bản vá của chúng để trợ giúp hội nhập tốt hơn các chương trình dành cho một phân phối cụ thể. Do đó, có khả năng một tính năng có sẵn trong Gentoo chẳng hạn sẽ không có trong Slackware. Dù sao cũng không có gì đọc tốt hơn trang man, đặc biệt nếu bạn đang làm việc với chương trình mới, mà bạn định sử dụng khá thường xuyên.

3. Sử dụng cron

Đầu tiên, chúng ta cần đảm bảo cron đang chạy:

$ps giả | grep cron

Nếu không có gì ở đầu ra, hãy kiểm tra xem cron có đang chạy hay không và thêm nó vào các dịch vụ mặc định để nó khởi động vào lần khởi động tiếp theo. Làm thế nào để làm điều này phụ thuộc vào việc phân phối. Trên hệ thống Debian, lệnh sẽ xuất ra kết quả như thế này:

Gốc 1424 0,0 0,0 22000 884? Ss 13:56 0:00 /usr/sbin/cron

Bây giờ hãy bắt đầu cron hoạt động. Đầu tiên chúng ta cần nghĩ xem chúng ta sẽ sử dụng lệnh nào. Nó có yêu cầu quyền root không? Giả sử chúng ta sử dụng crontab để thêm một tập lệnh đơn giản chạy năm phút một lần với tư cách là một người dùng đơn giản.

3.1. crontab

3.1.1. Ví dụ

Hãy viết một tập lệnh đơn giản sẽ hiển thị hộp thoại dựa trên lời nguyền thông thường trong thiết bị đầu cuối (hộp thoại và bất kỳ trình mô phỏng thiết bị đầu cuối nào là bắt buộc - chúng tôi sử dụng xterm):

#!/bin/sh xterm -e "dialog --msgbox "Testing cron..." 234 234" # Đây là một ví dụ rất đơn giản, hãy coi nó như nó vốn có

Hãy đặt tên tệp là crontest.sh và làm cho nó có thể thực thi được, vì mọi thứ được chạy bằng cron đều phải có thể thực thi được:

$ chmod +x crontest.sh

Bây giờ chúng ta cần chỉnh sửa bảng crontab của người dùng để thêm mục nhập cho tập lệnh tuyệt vời của mình:

E dùng để chỉnh sửa, -r để xóa. Hãy thật cẩn thận! Nhiều quản trị viên hệ thống đã bất cẩn nhập -r thay vì -e, đặc biệt khi các phím này nằm cạnh nhau và xóa tất cả các mục khỏi crontab. Trong mọi trường hợp, rất có thể bạn sẽ thấy một tệp nhận xét đầy đủ (crontab sử dụng # để biểu thị các nhận xét) cung cấp các ví dụ và mô tả mục đích của các trường nhập. Có, một bản ghi bao gồm các trường, trường cuối cùng chỉ định lệnh sẽ được thực thi và các đặc điểm thời gian còn lại. Vì vậy, mục nhập crontab của chúng tôi cho một tập lệnh chạy cứ năm phút một lần trông như thế này:

$ */5 * * * * xuất HIỂN THỊ=:0 && /home/$user/crontest.sh

Chúng ta cần xuất biến HIỂN THỊ để xterm không đưa ra các lỗi như "HIỂN THỊ chưa được đặt". Bây giờ chúng ta hãy xem mục đích của từng lĩnh vực.

3.1.2. Trường Crontab

Nếu trước đây bạn đã làm việc với các ký tự đại diện, bạn sẽ không gặp vấn đề gì khi học cách sử dụng dấu hoa thị trong crontab: điều đó có nghĩa là tất cả các giá trị trường có thể có đều được thay thế. Các trường mặc định trong Linux (hãy cẩn thận, một số hệ thống Unix sử dụng các cách triển khai cron khác nhau) cho biết, từ trái sang phải: phút, giờ, ngày trong tháng, tháng, ngày trong tuần, năm (tùy chọn) và lệnh được thực thi. Vì vậy, nếu chúng ta muốn tập lệnh của mình chạy năm phút, mỗi giờ, mỗi ngày, mỗi tháng và mỗi năm, thì mục nhập của chúng ta sẽ như thế này:

5 * * * * xuất HIỂN THỊ=:0 && /home/$user/crontest.sh

Chúng tôi khuyên bạn nên cẩn thận với trường ngày trong tuần: ở quốc gia của bạn, ngày đầu tuần có thể là thứ Hai, nhưng ở các quốc gia khác có thể là Chủ nhật. Nếu bạn làm việc trong môi trường đa văn hóa, đa quốc gia, bạn cần ghi nhớ những đặc điểm văn hóa, tôn giáo. Cron gửi thông báo cho người dùng sở hữu mục nhập vào địa chỉ gửi thư mặc định ($người dùng@$tên máy chủ). Nếu bạn muốn thay đổi địa chỉ của mình E-mail, chỉ cần thêm "MAILTO=$email_address" vào crontab. Nếu bạn muốn tắt tính năng này, hãy thêm ">/dev/null 2>&1" vào cuối mục nhập.
Bây giờ, nếu bạn cảm thấy mệt mỏi với việc cửa sổ bật lên cứ năm phút một lần, hãy chạy lại crontab -e để xóa hoặc đơn giản hơn là nhận xét mục nhập. Để xem nội dung của crontab, chỉ cần sử dụng tùy chọn -l (danh sách).

3.2. Nhìn vào /etc/

3.2.1. tập lệnh cron

Trong các phần trước chúng ta đã giải quyết đơn giản và nhiệm vụ tầm thường, chỉ để khởi động thôi, và bây giờ chúng ta sẽ bắt tay vào công việc nghiêm túc. Phần mở đầu phần nàyđề cập đến các thư mục trong /etc chịu trách nhiệm thực hiện các nhiệm vụ bảo trì hệ thống định kỳ. Ví dụ: trong thư mục /etc/cron.weekly có tập lệnh man-db cập nhật cơ sở dữ liệu trang man. Tất cả các tập lệnh như vậy đều có trong bản phân phối và được khởi chạy theo tệp /etc/crontab. Vì vậy, nếu bạn muốn hiểu cách chúng hoạt động, tốt nhất bạn nên nghiên cứu nội dung của tệp này. Bạn sẽ thấy các bài đăng tương tự như những bài chúng tôi đã thực hiện trước đó, nhưng lệnh thực thi Sẽ khác. "run-parts" là một tiện ích nhỏ được thiết kế để chạy tất cả các tập lệnh trong một thư mục nhất định.
Người đọc chú ý có thể nhận thấy rằng có một trường trong /etc/crontab mà chúng tôi không thấy khi chỉnh sửa crontab - đây là trường "người dùng". Điều này được thực hiện vì lý do bảo mật. Nếu bạn nhập crontab -e là $user, điều này có nghĩa là mọi lệnh sẽ được chạy với tư cách $user. Nhưng vì /etc/crontab có trên toàn hệ thống nên cần phải chỉ định rõ ràng người dùng, vì bạn có thể cần chạy một số tập lệnh hoặc chương trình nhất định với tư cách là người dùng không phải là người dùng root, đặc biệt nếu Quản trị hệ thống quan tâm đến bảo mật và thêm người dùng và nhóm vào hệ thống khi cần thiết. Ví dụ: sao lưu không yêu cầu quyền root đầy đủ, chỉ có quyền đọc và ghi đối với một số thư mục nhất định, do đó quản trị viên tạo một nhóm sao lưu và người dùng quản trị viên dự phòng có các quyền cần thiết và chạy các tập lệnh sao lưu hàng đêm bằng cách sử dụng lệnh ghi:

30 23 * * * backupadmin /home/backupadmin/nightlybkup.sh

Mục này chạy tập lệnh nightlybkup.sh vào lúc 11:30 tối hàng đêm. Nếu chúng tôi chỉ muốn chạy bản sao lưu từ Thứ Hai đến Thứ Sáu, chúng tôi cần chỉnh sửa mục nhập của mình:

30 23 * * 1-5 backupadmin /home/backupadmin/nightlybkup.sh

Nếu bạn chỉ muốn chạy bản sao lưu vào Thứ Hai, Thứ Tư và Thứ Sáu, hãy thay "1-5" bằng "1,3,5". Khi bạn biết chính xác những gì bạn cần, cron sẽ trở nên rõ ràng và dễ sử dụng.

4. Nghĩ đến sự an toàn

Có nhiều trường hợp bạn không muốn người dùng có quyền truy cập vào hệ thống của bạn có thể tạo các mục crontab. Đây là nơi các tệp /etc/cron.deny và /etc/cron.allow phát huy tác dụng. Cách sử dụng chúng tương tự như /etc/hosts.allow và /etc/hosts/deny, vì vậy nếu bạn đã từng làm việc với các tệp này trước đây thì bạn sẽ thấy thoải mái. Hai file này (cron.deny và cron.allow) mặc định không có trên hệ thống, ít nhất là trên hệ thống chúng ta đang làm việc, nên mặc định mọi người đều được phép tạo các mục crontab. Bạn có thể kiểm tra các tệp liên quan đến cron trong thư mục /etc của mình bằng lệnh:

$ ls /vv | grep cron

Một lần nữa, chúng tôi nhắc bạn rằng tất cả những điều trên đều đúng với Linux, vì việc không có các tệp này trên Solaris có nghĩa là hoàn toàn ngược lại, ngoài ra, các tệp nằm ở những nơi khác nhau. Cron.allow được chọn trước tiên, vì vậy chúng tôi thường nhập "TẤT CẢ" vào cron.deny rồi thêm người dùng mà chúng tôi muốn cấp quyền truy cập vào cron.allow.

5. Ví dụ sử dụng cron

Mỗi phút:

* * * * * /usr/local/bin/check-disk-space.sh

Lệnh sẽ được thực hiện mỗi phút, ngày và tháng.

Theo ngày:

30 02 10 01,06,12 * /home/$user/bin/checkdrive.sh

Lệnh này sẽ chạy tập lệnh checkdrive.sh vào lúc 02:30 mỗi ngày 10 tháng 1, tháng 6 và tháng 12.

Mỗi nửa giờ:

00:30 * * * * /home/$user/backupdata.sh

Chỉ vào cuối tuần:

* * * * 6,7 /usr/bin/cuối tuần

Hai lần một ngày:

20 11.16 * * * /usr/sbin/lệnh

Lệnh sẽ được thực thi hàng ngày vào lúc 11h20 và 16h20.

Mỗi giờ vào một ngày cụ thể:

01 * 2 05 * /sbin/system_command

Cứ 10 phút một lần trong 5 ngày làm việc (Thứ Hai - Thứ Sáu):

*/10 * * * 1-5 /usr/local/bin/check-disk-space.sh

Chỉ trong giờ làm việc:

00 09-17 * * 1-5 /usr/local/bin/check-disk-space.sh

Lệnh này sẽ được thực thi mỗi ngày một lần từ 9 giờ sáng đến 5 giờ chiều.

0 0 1 1 * /usr/local/bin/check-disk-space.sh

Hai lần một năm vào lúc 12:00 và 24:00

0 0,12 1 */6 * /usr/local/bin/check-disk-space.sh

Lệnh này sẽ được thực hiện hai lần một năm (6 tháng một lần) vào lúc 12:00 và lúc 24:00.

Thứ Năm của tuần thứ ba của bất kỳ tháng nào vào lúc 10:00:

0 10 15-21 * 4 /usr/local/bin/check-disk-space.sh

Mỗi ngày 20 phút sau mỗi giờ chẵn:

20 0-23/2 * * * /usr/local/bin/check-disk-space.sh

Lệnh này sẽ được thực thi mỗi ngày 20 phút sau mỗi giờ chẵn (0:20, 2:20...22:20).

6. Kết luận

Nếu lúc đầu, bạn thấy các mục crontab khó hiểu và khó hiểu, tôi đảm bảo với bạn rằng với việc sử dụng chúng liên tục, bạn sẽ sớm ghi nhớ thứ tự và mục đích của tất cả các trường, cũng như tên và vị trí của tất cả các tệp cần xóa. được chỉnh sửa. Tất cả chỉ cần thực hành.

Nếu bạn thích bài viết, hãy chia sẻ nó với bạn bè của bạn:

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 Linux Cron chuyển hướng)

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)

Tập lệnh sau sử dụng bản sao lưu bổ sung 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 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 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 /home/developer vào biến PATH trong crontab như hiển thị bên dưới.

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 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

Giới thiệu

Bằng cách lưu trữ trang web, chúng tôi muốn đảm bảo hoạt động không bị gián đoạn mà không có sự tham gia của chúng tôi.

Điều này có nghĩa là bạn cần tự động hóa các quy trình và ở đây cron sẽ giải cứu.

Cron- chương trình, daemon cho khởi động tự động các chương trình và tập lệnh trên máy chủ vào thời điểm được yêu cầu.

Crontab trong bảng điều khiển Timeweb

Nếu tài khoản của bạn được trả tiền và bạn không bị phát hiện gửi thư rác thì phần Crontab có sẵn và hoạt động:

Giao diện Crontab trong bảng điều khiển Timeweb rất thân thiện và trực quan: ngay cả những người dùng mới làm quen, chưa có kinh nghiệm sử dụng cron trước đây cũng có thể dễ dàng tìm ra cách tạo tác vụ. Sau khi tạo một tác vụ, bạn có thể chế độ tự động tạo bản sao lưu, gửi thư, xóa bộ nhớ đệm và thực hiện các hành động tiêu chuẩn khác.

Crontab trong bảng điều khiển Timeweb sẽ giúp bất kỳ người dùng nào tự động hóa các tác vụ của mình và đạt được kết quả họ cần.

Sau những thông tin cơ bản, tôi sẽ nói về những sắc thái quan trọng cần xem xét khi làm việc với cron.

Các tác vụ mới được tạo trong phần Crontab. Để làm điều này, bạn sẽ cần phải điền vào các trường sau:

  • Tên. Đây là tên nhiệm vụ của chúng tôi.
  • Loại tệpđường dẫn đến tập tin. Tùy thuộc vào ngôn ngữ viết tập lệnh, hãy chọn loại tệp và đường dẫn đến tập lệnh đó. Nếu một tác vụ chạy một tập lệnh yêu cầu các biến máy chủ web thì việc chạy nó trực tiếp thông qua trình thông dịch PHP sẽ dẫn đến lỗi. Do đó, trong trường hợp bạn sử dụng tập lệnh hoạt động khi khởi chạy qua thanh địa chỉ của trình duyệt, bạn phải chọn loại tệp "Yêu cầu HTTP" và chỉ định URL cho yêu cầu giống như được chỉ định trong thanh địa chỉ"your_site/path/to/script/script.php?parameter1=value1¶meter2=value2".

Nếu cần, hãy chỉ định một tài khoản quản trị viên trong phần Crontab. Tin nhắn sẽ được gửi đến hộp thư này trong trường hợp có thông báo xuất hiện trong bảng điều khiển khi chạy tập lệnh.

Sắc thái

Những sắc thái nhỏ cần ghi nhớ khi làm việc với cron.

1. Cron hoạt động nếu tài khoản được thanh toán và không có hạn chế nào.

Bạn có thể kiểm tra trạng thái bằng cách tạo một tệp có phần mở rộng php (ví dụ: twtest.php) với mã:

Và truy cập tập tin trong trình duyệt.

Trong trình duyệt, bạn sẽ thấy thông tin sau:

uid=12345(đăng nhập) gid=600(khách hàng) nhóm=600(khách hàng) - chỉ ra rằng cron và thư có sẵn

uid=12345(đăng nhập) gid=600(khách hàng) nhóm=601(khách hàng mới),600(khách hàng),660(người gửi thư rác) - viết để hỗ trợ

2. Tệp bạn đang chạy phải có quyền đọc và thực thi (r+x).

Theo mặc định, các tệp trên hosting được tạo với quyền 600. Bạn có thể thay đổi quyền thành những quyền được yêu cầu thông qua ssh bằng lệnh:

Chmod 744 twtest.php

hoặc trong Quản lý tập tin, Timeweb có hướng dẫn về việc này:

3. Để không làm xáo trộn e-mail của bạn với những lá thư không cần thiết,điều chỉnh thường xuyên tập lệnh thực thiđể ghi nhật ký vào một tập tin, chứ không phải bảng điều khiển.

CRON qua SSH

Việc thiết lập bộ lập lịch qua ssh đã được mô tả rất nhiều lần nên không thể nói được điều gì mới.

Kết nối qua ssh được mô tả chi tiết trong Trung tâm trợ giúp Web thời gian:

Sau khi đọc, bạn cần tìm tệp có tập lệnh, di chuyển giữa các thư mục bằng lệnh cd. Sau khi tìm thấy tệp, nhập pwd và sao chép đường dẫn (ví dụ "/home/c/cc123456/public_html/test/")

Nếu bạn không biết tệp có những quyền gì, hãy nhập:

Tên tệp Chmod 744

Khi kết nối qua ssh, bạn có thể chỉnh sửa tác vụ bằng lệnh

Crontab -e

Lần đầu tiên máy chủ sẽ yêu cầu bạn chọn một trình soạn thảo:

Chọn một trình soạn thảo. Để thay đổi sau, hãy chạy "select-editor". 1. /bin/ed 2. /bin/nano<---- easiest 3. /usr/bin/mcedit 4. /usr/bin/vim.basic 5. /usr/bin/vim.tiny Choose 1-5 :

Hệ thống trỏ đến một trình soạn thảo nano đơn giản dưới số 2. Nếu bạn không tính toán lực hoặc vô tình chọn vi, đừng lo lắng, hãy nhấn Esc, sau đó nhập dấu hai chấm q và nhấn enter.

Để thay đổi trình soạn thảo, nhập lệnh:

Chọn trình soạn thảo

và chọn nano.

Bài tập được viết theo từng dòng. Ví dụ:

1 2 3 4 5 /opt/php56/bin/php /home/с/сс123456/public_html/twtest.php

Ý nghĩa của năm giá trị đầu tiên:

  • 1 phút - một số từ 0 đến 59
  • 2 giờ - một số từ 0 đến 23
  • Ngày thứ 3 của tháng - một số từ 1 đến 31
  • Số 4 tháng trong năm - số từ 1 đến 12
  • Ngày thứ 5 trong tuần - một số từ 0 đến 7 (0-CN,1-Thứ Hai,2-Thứ Ba,3-Thứ Tư,4-Thứ Năm,5-Thứ Sáu,6-Thứ Bảy,7-Chủ Nhật)

Đối với mỗi tham số, có thể chỉ định số lượng giá trị cần thiết được phân tách bằng dấu phẩy. Ví dụ: nếu bạn viết 8,23 ​​vào trường “giờ”, thì tác vụ sẽ chạy lúc 8 giờ sáng và lúc 11 giờ tối. Bạn có thể đặt khoảng thời gian: 9-18 có nghĩa là chương trình sẽ bắt đầu mỗi giờ từ 9 đến 18 giờ. Ký hiệu "*" có nghĩa là "tất cả các giá trị có thể". Ví dụ: chỉ định "*" trong trường "giờ" có nghĩa là "chạy mỗi giờ". Ký hiệu "/" được sử dụng để biểu thị tần suất bổ sung của công việc. Ví dụ: "*/3" trong trường "phút" có nghĩa là "ba phút một lần".

"/opt/php*/bin/php" trong đó php*/ = php53/ php5.3/ php54/ php5.4/ php56/ php5.6/ php70/ php7.0/ php71/ php7.1/

Mục cuối cùng cho biết đường dẫn đến tệp và tên của tệp mà chúng tôi đang khởi chạy.

Sắc thái

  1. Khi bạn thực hiện các thay đổi trong bảng điều khiển trong phần "Crontab", các thay đổi đối với các mục được thực hiện qua ssh sẽ bị xóa!
  2. Nếu cả hai trường "ngày trong tháng" và "ngày trong tuần" đều được xác định thì công việc đó sẽ được thực hiện vào mỗi ngày được chỉ định trong tuần, bất kể ngày nào trong tháng. Ví dụ: lệnh sau sẽ chạy lúc 9:19 thứ Tư hàng tuần và ngày thứ 7 hàng tháng, ngay cả khi ngày thứ 7 không giống thứ Tư.

19 9 7 * 3 /opt/php56/bin/phpn /home/s/ss123456/public_html/twtest.php

Trường hợp đặc biệt

Để chạy một tác vụ thường xuyên hơn một lần mỗi phút, hãy sử dụng chế độ ngủ.

Để làm điều này, hãy viết bằng crontab:

* * * * * /opt/php56/bin/php /home/k/konoplev/tmp/twtest.php; /bin/ngủ 30; /opt/php56/bin/php /home/k/konoplev/tmp/twtest.php

để chạy tập tin cứ sau 30 giây.

Đôi khi khi sử dụng bộ lập lịch chương trình cron, bạn không biết tập lệnh sẽ chạy trong bao lâu. Để tránh chạy tập lệnh hai lần, cần phải kiểm tra để đảm bảo rằng lần chạy tập lệnh trước đó đã hoàn tất.

Tùy chọn hợp lý sẽ là tạo một tệp khóa và kiểm tra sự hiện diện của tệp khi chạy tập lệnh. Nhưng dịch vụ lưu trữ Timeweb, giống như các trang web lưu trữ khác, có giới hạn về bộ xử lý. Tập lệnh phụ thuộc vào điều kiện và thời gian thực thi, nghĩa là chúng ta không thể dự đoán được thời gian thực thi của tập lệnh. Nếu tập lệnh được thực thi vi phạm các quy tắc và hạn chế ( ), thì quá trình sẽ kết thúc ở phía lưu trữ. Khi đó file lock sẽ không bị xóa, có nghĩa là script sẽ không được cron chạy cho đến khi file bị xóa.

Người thợ trưởng của bộ phận kỹ thuật đã giải thích cách giải quyết vấn đề.

Đầu tiên, tạo tập lệnh sh trong tệp /home/c/cc123456/tmp/twtest.sh:

#!/bin/bash command=$@ no_spaces=`echo $command | sed -e "s/\s/_/g" -e "s|/|_|g"` pidfile=/var/tmp/$no_spaces.pid lockfile=/var/tmp/$no_spaces.lock nếu [[ -e $pidfile ]] thì pid=`cat $pidfile 2>/dev/null` ps h $pid >/dev/null 2>/dev/null nếu [[$? -eq 0 ]] sau đó thoát 1 else rm $lockfile fi fi echo $$ > $pidfile /usr/bin/flock -w 0 $lockfile $command rm $pidfile

Trong bảng điều khiển, trong phần crontab, chọn loại “Tệp nhị phân có thể thực thi”.

Trong trường “Đường dẫn đầy đủ”, chúng tôi viết:

/home/c/cc123456/tmp/twtest.sh /opt/php56/bin/php /home/c/cc123456/tmp/twtest.php

Ở đâu

  • /home/c/cc123456/tmp/twtest.sh - tập lệnh thử nghiệm của chúng tôi
  • /opt/php56/bin/php - đường dẫn đến trình thông dịch mong muốn
  • /home/c/cc123456/tmp/twtest.php - đường dẫn đến tập lệnh của chúng tôi

Chúng tôi cho biết thời gian ra mắt cần thiết và đưa ra tên.

Phần kết luận

Bây giờ bạn đã biết cách làm việc với cron và chạy các tác vụ một cách tự động. Hơn thông tin chi tiết về cron, hãy tìm trong "man cron". Chúc may mắn!

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.