Cron chạy hàng ngày. Chỉnh sửa trực tiếp tập tin crontab. Cài đặt Crontab từ file Cron

, | |

Ngày nay, Cron là một trong những cách phổ biến nhất để tự động hóa việc khởi chạy các tiến trình trong Linux. Cron là một daemon chạy trong lý lịch và cho phép bạn lên lịch và tự động hóa việc khởi chạy các tác vụ khác nhau (bao gồm cả những tác vụ liên quan đến hỗ trợ máy chủ). Với mục đích này nó được sử dụng tập tin cấu hình crontab.

Cài đặt Cron

TRÊN khoảnh khắc này Hầu như tất cả các bản phân phối đều có cron daemon được cài đặt sẵn theo mặc định. Nếu cron không được cài đặt theo mặc định, bạn có thể nhanh chóng cài đặt nó bằng các lệnh sau:

Ubuntu/Debian:

cập nhật sudo apt-get
sudo apt-get cài đặt cron

Hệ điều hành Cent/Red Hat Linux:

cập nhật sudo yum
sudo yum cài đặt vixie-cron crontabs

Sau khi cài đặt hoàn tất, bạn cần đảm bảo rằng cron đang chạy ở chế độ nền:

bật sudo /sbin/chkconfig
sudo /sbin/service crond bắt đầu

Cú pháp cơ bản

Hãy xem xét ví dụ sau về một tác vụ cần được lên lịch để chạy:

5 * * * * cuộn tròn http://www.google.com

Cú pháp lập kế hoạch Các nhiệm vụ khác nhau lúc đầu có thể có vẻ khó hiểu. Thực ra nó rất ngắn và đơn giản, bạn chỉ cần tìm cách đọc nó là được. Mỗi dòng được chia thành một biểu đồ và một lệnh. Hầu như bất kỳ lệnh nào cũng có thể được nhập vào dòng. Lịch trình được chia thành 5 lĩnh vực quy hoạch khác nhau theo thứ tự sau:

<Минуты> <Часы> <Дни_месяца> <Месяцы> <Дни_недели>

Ví dụ sử dụng cron

Phần này chứa các ví dụ về lập kế hoạch cho các nhiệm vụ phổ biến nhất.

Để lệnh chạy tự động mỗi phút:

Vì vậy, lệnh được thực thi cứ sau mười hai phút trong giờ (08.12, 09.12, v.v.):

Để chạy lệnh cứ sau 15 phút:

0,15,30,45 * * * *

Để lệnh chạy tự động hàng ngày vào lúc 4 giờ sáng:

Để chạy lệnh vào lúc 4 giờ sáng Thứ Ba hàng tuần:

Lịch trình có thể được chia. Nghĩa là, thay vì 0,15,30,45 bạn có thể sử dụng:

Xin lưu ý phạm vi 2-6. Cú pháp này sẽ chạy lệnh được chỉ định từ 2 giờ đến 6 giờ sáng, cứ 15 phút một lần.

Như bạn có thể thấy, cú pháp cực kỳ mạnh mẽ và linh hoạt của cron cho phép bạn chỉ định hầu hết mọi khoảng thời gian.

Thiết lập cron

Sau khi đã xây dựng một lịch trình hoàn thành nhiệm vụ, bạn cần đặt nó vào đúng điểm hệ thống để con quỷ có thể tìm và đọc nó. Nói chung, có một số điểm như vậy trong hệ thống, nhưng theo quy định, biểu đồ như vậy được đặt trong crontab của người dùng. Như đã đề cập, crontab là một tệp cấu hình cho cron daemon chứa lịch khởi động một số lệnh nhất định và các chương trình. Tệp này nằm trong /var/spool/cron/crontab, nhưng thông thường không thể chỉnh sửa trực tiếp nó. Để thêm vào tập tin chương trình cần thiết Lệnh cùng tên được sử dụng - crontab. Tức là để chỉnh sửa file crontab, bạn chỉ cần nhập:

Lệnh này sẽ mở soạn thảo văn bản, nhờ đó bạn có thể nhập mọi thứ sự thay đổi cần thiết; Mỗi nhiệm vụ mới phải được nhập trên một dòng mới.

Để xem crontab mà không thực hiện bất kỳ thay đổi nào, hãy sử dụng lệnh:

Bạn có thể xóa crontab bằng lệnh sau:

Người dùng cấp cao có thể chỉnh sửa crontab của người dùng khác bằng cách sử dụng:

crontab -u<пользователь>-e

đầu ra cron

Sau khi tác vụ hoàn thành, cron sẽ gửi đầu ra tới địa chỉ email người dùng (trừ khi đầu ra cần được gửi tới nhật ký hoặc/dev/null). Địa chỉ E-mail có thể được chỉ định thủ công bằng cách thêm tham số MAILTO vào phần trên cùng crontab. Bạn cũng có thể chỉ định shell sẽ được khởi chạy, đường dẫn đến tập tin nhị phân cron và thư mục chính. Đối với điều này:

crontab mở đầu tiên:

sau đó chỉnh sửa nó như thế này:

VỎ=/bin/bash
TRANG CHỦ=/
MAILTO=”example@some_user.com”
#Đây là một bình luận
* * * * * echo 'Chạy lệnh này mỗi phút'

Dòng này sẽ trả về Chạy lệnh này mỗi phút. Trình nền cron sẽ gửi đầu ra này tới example@some_user.com. Tất nhiên, điều này không thuận tiện lắm. Bắt đầu sớm hơn, kết luận này có thể được chuyển hướng đến một tệp nhật ký để tránh những tình huống như vậy.

Để làm điều này bạn chỉ cần thêm:

* * * * * echo ‘Chạy lệnh này mỗi phút’ >> file.log

Lưu ý: >> ký hiệu sẽ hướng đầu ra vào nhật ký. Ngoài nhật ký, bạn cũng có thể sử dụng /dev/null bằng cách sử dụng tập lệnh PHP sau đang chạy trong nền.

* * * * * /usr/bin/php /var/www/domain.com/backup.php > /dev/null 2>&1

Hạn chế quyền truy cập vào cron

Để hạn chế quyền truy cập vào cron daemon, bạn cần sử dụng các tệp /etc/cron.allow và /etc/cron.deny. để cho phép (cho phép) hoặc từ chối (từ chối) quyền truy cập người dùng cụ thể, bạn chỉ cần nhập tên người dùng vào file thích hợp. Theo mặc định, cron daemon có sẵn cho tất cả người dùng. Để từ chối quyền truy cập cho tất cả người dùng và chỉ cấp quyền truy cập cho người dùng mẫu, bạn cần sử dụng trình tự sau 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 chỉnh sửa; 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 hiện 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.

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 soạn thảo... 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 về việc 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.

Cron là một công cụ lập lịch tác vụ chạy trên máy chủ Unix\Linux. Nó cho phép bạn tự động thực hiện hành động nhất định trên máy chủ (chương trình đang chạy, tập lệnh, v.v.), với thời gian nhất định hoặc tần số.

Cấu hình chính xác bộ lập lịch công việc Cron

Các công việc dành cho Cron có thể được mô tả như sau - đây là một số dòng (một dòng - một công việc), cho biết tần suất khởi chạy và lệnh (có nghĩa là những gì thực sự cần được khởi chạy):

30 3 * * 2 /yourdirectory/myscript.pl

Sơ đồ:

Phút Giờ Ngày Tháng Tháng Ngày Tuần Lệnh

phút- được đặt theo số từ 0 đến 59

Đồng hồ- được đặt theo số từ 0 đến 23

Ngày trong tháng- được đặt theo số từ 1 đến 31

Tháng- được đặt theo số từ 1 đến 12

Ngày trong tuần- 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

Do đó, trong ví dụ của chúng tôi (30 3 * * 2 /yourdirectory/myscript.pl) trở lại có nghĩa là bạn cần chạy tệp /yourdirectory/myscript.pl vào thứ Ba hàng tuần lúc 3:30 sáng

Ngoài ra trong mỗi lĩnh vực chúng ta có thể sử dụng:

Viết cách nhau bằng dấu phẩy: 2,5,16 - nếu bạn viết số này vào trường Giờ, tác vụ sẽ chạy lúc 2 giờ sáng, 5 giờ sáng và 4 giờ chiều.

Khoảng thời gian: 5-9 - nếu bạn viết phần này vào trường Phút, tác vụ sẽ chạy mỗi phút trong khoảng thời gian từ 5 đến 9 phút.

Tần số bổ sung: /4 - nếu bạn viết điều này vào trường giờ, điều đó có nghĩa là quá trình khởi chạy sẽ diễn ra sau mỗi 4 giờ.

Quan trọng! Dấu hoa thị (*) có nghĩa là tất cả các giá trị có thể có! Vì vậy, một quản trị viên web thiếu kinh nghiệm quyết định rằng để chạy một tác vụ vào ngày đầu tiên hàng tháng, chỉ cần viết * * 1 * * /yourdirectory/myscript.pl là đủ, tình cờ phát hiện ra rằng tác vụ sẽ được khởi chạy mỗi phút, mỗi giờ.

Làm thế nào và ở đâu để nhập công việc Cron?

Cách đầu tiên để làm việc với Cron là thông qua bảng điều khiển lưu trữ của bạn. Nhưng ở tấm khác nhau Việc cấu hình và quản lý được thực hiện theo nhiều cách khác nhau:

cPanel: Bảng điều khiển -> Công việc định kỳ

Trình quản lý ISP: Bảng điều khiển -> Bộ lập lịch (Cron)

Parallels Plesk: Bảng điều khiển -> Nhiệm vụ theo lịch trình

Nếu nhà cung cấp dịch vụ lưu trữ của bạn không có khả năng xử lý các công việc thông qua bảng điều khiển thì mọi công việc với Cron thường được thực hiện thông qua giao thức SSH. Mọi thứ ở đây đều đơn giản - kết nối với máy chủ qua SSH và nhập lệnh. Để kết nối với máy chủ, hãy sử dụng chương trình miễn phí PuTTY (cách thiết lập) và các lệnh được nhập trên dòng lệnh.

Để bắt đầu, hãy nhập lệnh

Sau đó, rất có thể bạn sẽ được chuyển sang trình soạn thảo văn bản vi (các nhà cung cấp khác nhau có thể có biên tập viên khác nhau). vi là một trình soạn thảo khá phức tạp, vì vậy chúng tôi khuyên bạn nên thử nhập dòng

Nếu trình chỉnh sửa nhẹ hơn khởi động thì mọi thứ đều ổn, nhưng nếu nhà cung cấp dịch vụ lưu trữ của bạn không hỗ trợ thì Google sẽ giúp bạn tìm ra nó với vi. Chúng tôi sẽ chỉ phác thảo ngắn gọn những điểm chính:

Nhập văn bản- nhấn phím i và trình soạn thảo sẽ chuyển sang chế độ nhập văn bản;

thoát chế độ nhập văn bản- Thoát

Xóa ký tự- x (nếu bạn đang ở chế độ nhập thử, sau đó để xóa một ký tự, trước tiên hãy nhấn Esc rồi đến x);

Quan trọng! Khi nhập các công việc cho Cron, bạn phải nhấn Enter sau mỗi dòng, kể cả khi đây là dòng duy nhất.

Để xem các công việc Cron hiện có, hãy nhập crontab -l

Công việc định kỳ với các ví dụ hữu ích

Xem các quy tắc tạo công việc Cron. Chạy một tác vụ cứ sau 2 giờ với 0 phút (hàng ngày, hàng tháng)

0 */2 * * * /yourdirectory/myscript.pl

Chạy tác vụ mỗi lần sau khi khởi động lại máy chủ

@reboot/yourdirectory/myscript.pl

Chạy task vào thứ Tư lúc 3h20 sáng (hàng ngày, hàng tháng)

20 3 * * 3 /yourdirectory/myscript.pl
1 0 14 3 * /yourdirectory/myscript.pl

Chạy task hàng tháng vào ngày 1 lúc 3h15 sáng (hàng tháng)

15 3 1 * * /yourdirectory/myscript.pl

Chạy các tệp PHP theo lịch bằng Cron

Để chạy tập lệnh PHP qua Cron, bạn có thể sử dụng trình thông dịch đặc biệt. Thật không may, chúng tôi không thể cung cấp cho bạn hướng dẫn về cách sử dụng nó, bởi vì... Các nhà cung cấp khác nhau có thể sử dụng phần mềm khác nhau. Do đó, nhiều quản trị viên web khởi chạy tệp PHP bằng WGET; để làm điều này, chúng tôi sử dụng mục crontab sau:

30 3 * * 2 root wget -O - -q -t 1 http://mysite.com/file.php

"-O -" có nghĩa là Cron sẽ không tạo tập tin bổ sung, nhưng sẽ hoạt động thông qua bảng điều khiển. Điều này cho phép bạn tránh làm lộn xộn máy chủ.

"-q" vô hiệu hóa thao tác in ra màn hình

"-t 1" chỉ cho phép một lần thử kết nối.

http://mysite.com/file.php - đường dẫn đến tệp PHP của bạn (không cần thiết phải chỉ định đường dẫn tuyệt đối).

Quan trọng! Nếu bạn truyền tham số bằng tệp PHP này, đôi khi WGET không xử lý chúng một cách chính xác. Trong trường hợp này, chúng tôi khuyên bạn nên đặt địa chỉ tệp PHP trong dấu ngoặc đơn:

30 3 * * 2 wget gốc -O - -q -t 1 "http://mysite.com/file.php"

Ngoài ra, còn có một cách khác để bắt đầu:

30 3 * * 2 /usr/bin/wget -O - -q -t 1 http://mysite.com/file.php

Nhưng trong trường hợp này, bạn cần biết đường dẫn đến thư mục wget trên máy chủ của mình (thường là /usr/bin/wget hoặc /usr/local/bin/wget).

Nhận báo cáo công việc Cron qua email

Cron có thể được cấu hình để gửi email kèm theo kết quả của các công việc đang chạy. Tính năng này cũng có thể hữu ích cho việc thông báo trong trường hợp có lỗi. Để nhận báo cáo qua e-mail, bạn cần chỉnh sửa crontab (trước tác vụ) và viết dòng sau:

Ở đâu [email được bảo vệ]- đây là e-mail mà thư sẽ được gửi đến. Bạn cũng có thể thêm nhiều địa chỉ, cách nhau bằng dấu phẩy.

Còn một điều nữa: bạn cũng sẽ nhận được kết quả của script qua email. ví dụ: nếu tập lệnh viết một số loại dòng chữ trên màn hình, thì dòng chữ tương tự sẽ được gửi đến email của bạn cùng với báo cáo. Nếu điều này làm bạn khó chịu, hãy thêm dòng > /dev/null 2>&1 vào cuối tác vụ

30 3 * * 2 /usr/bin/wget -O - -q -t 1 http://mysite.com/file.php > /dev/null 2>&1

Trong hệ điều hành Unix, có thể khởi chạy các chương trình người dùng vào thời điểm do anh ta chỉ định. Với mục đích này nó được sử dụng chương trình cron, nhận hướng dẫn từ người dùng và theo dõi họ, thực hiện bất kỳ tác vụ nào theo tập lệnh đã nhận. Khách hàng của chúng tôi có thể sử dụng tính năng này để thực hiện các nhiệm vụ định kỳ.

Cách thiết lập cron trong Tài khoản cá nhân của bạn (đối với biểu giá unix)

Vì không phải tất cả các chương trình PHP đều có thể chạy qua SAPI CLI mà không cần sửa đổi trước, nên bạn có thể chạy chúng qua quên. Ví dụ:

/usr/local/bin/wget -O /dev/null -q http://mysite.tld/cron.php?action=123

Nếu tập lệnh sử dụng chức năng yêu cầu, bao gồm, và chúng chỉ ra đường dẫn tương đối, sau đó ở đầu tập lệnh được thực thi, hãy sử dụng lệnh gọi hàm chdir(), nó sẽ thiết lập thư mục làm việc hiện tại.

Cách nhận thông báo lỗi từ các chương trình do cron chạy

Nếu gặp lỗi khi thực thi một chương trình chạy từ cron, có thể bạn sẽ muốn nhận được thông báo lỗi để có thể giám sát đầy đủ hiệu suất của các công việc chạy định kỳ. Để thực hiện việc này, hãy đặt dòng sau vào đầu tập lệnh cron:

MAILTO=địa chỉ@domain.ru

Chắc chắn, địa chỉ@domain.ru cần phải được thay thế bằng thực tế địa chỉ hiện có email nơi thông báo sẽ cần được gửi. Nếu bạn cần nhận thông báo lỗi tới một số địa chỉ, hãy chỉ định tất cả các địa chỉ này được phân tách bằng dấu phẩy.

Xin lưu ý rằng cron sẽ gửi qua thư những gì tập lệnh đang chạy xuất ra. Ví dụ: nếu bạn viết một tập lệnh in dòng “Xin chào, thế giới” và chạy nó qua cron, bạn sẽ nhận được email có dòng “Xin chào, thế giới” mỗi khi cron chạy tập lệnh như vậy.

Để tránh điều này, ví dụ khi bạn không cần xuất văn bản bằng tập lệnh, bạn cần thêm các ký tự

> /dev/null 2>&1

Dòng hoàn chỉnh cho cron sẽ trông như thế này:

0 1 * * * /usr/local/bin/php -q $HOME/script.php > /dev/null 2>&1

Chúng tôi khuyên bạn nên kiểm tra cú pháp chính xác của tập lệnh mà bạn đặt để chạy qua cron. Các tập lệnh có thể có lỗi, có thể không hoạt động giống nhau khi chạy qua máy chủ web và qua cron, v.v. Để đảm bảo rằng tập lệnh sẽ hoạt động chính xác thông qua cron, trước tiên hãy kiểm tra nó bằng lệnh sau trong shell unix:

/usr/local/bin/php -l script.php

Nếu không có lỗi trong tập lệnh, bạn sẽ thấy thông báo “Không phát hiện thấy lỗi cú pháp trong script.php”.

Những hạn chế

Đối với các chương trình được khởi chạy qua cron, các hạn chế tương tự đối với tài nguyên đã tiêu thụ sẽ được áp dụng như đối với các quy trình do người dùng khởi chạy trong Unix shell. Đó là về về các hạn chế về thời gian thực hiện của chương trình, số lượng bộ nhớ khả dụng, giới hạn kích thước tệp, v.v.