Computer >> Máy Tính >  >> Hệ thống >> Linux

Cấu hình Cron Jobs với Crontab trên CentOS / RHEL Linux

Cron là một bộ lập lịch tác vụ cho các hệ thống dựa trên Unix bao gồm tất cả các bản phân phối Linux. Daemon cron hoạt động ở chế độ nền trên máy chủ của bạn và chạy các tác vụ đã lên lịch theo lịch trình. Trong bài viết này, chúng tôi sẽ hướng dẫn cách cài đặt cron trên máy chủ chạy CentOS hoặc RHEL Linux, tìm hiểu cú pháp cron và lập lịch công việc cron với crontab.

Cách cài đặt Cron trên Centos hoặc RHEL Linux?

Theo mặc định, cron khả dụng ngay sau khi cài đặt RHEL hoặc CentOS. Nếu không có vì lý do nào đó, bạn có thể cài đặt nó từ kho lưu trữ cơ sở bằng cách sử dụng lệnh yum hoặc dnf:

# dnf update -y - cập nhật tất cả các gói trên máy chủ lưu trữ
# dnf install crontabs -y - để cài đặt cron

Cấu hình Cron Jobs với Crontab trên CentOS / RHEL Linux

Bật daemon crond và chạy nó sau khi cài đặt:

# systemctl enable crond.service
# systemctl start crond.service

Làm thế nào để Thêm một Công việc Cron với Crontab?

Bạn có thể sử dụng lệnh sau để thêm các tác vụ vào cron:

# crontab -e

Lệnh này sẽ mở tệp tác vụ cho người dùng của bạn trong trình soạn thảo văn bản mặc định (đó là vim trong trường hợp của tôi, nhưng bạn có thể thay đổi nó thành cái khác thuận tiện hơn cho bạn, ví dụ: nano ). Phương pháp này để cấu hình nhiệm vụ ngăn ngừa lỗi cú pháp. Crontab không cho phép lưu tệp cấu hình có lỗi.

Bạn cũng có thể chỉnh sửa tệp công việc cron theo cách thủ công trong mc:

# mcedit /var/spool/cron/root - tên tệp có thể khác nhau tùy thuộc vào người dùng.

Để thêm một công việc đơn giản chạy tập lệnh bash trong cron, hãy nhập lệnh sau:

# crontab -e

Sau đó, thêm lịch tác vụ và đường dẫn đến tệp script:

* * * * * /root/test.sh

Lưu tệp (tương tự như chỉnh sửa trong vim:nhấn Ctrl + O để lưu tệp và Ctrl + X để thoát).

Nếu bạn đã làm đúng, nhiệm vụ của bạn sẽ được thêm vào cron. Để hiển thị danh sách các công việc cron, hãy chạy lệnh sau:

# cat /var/spool/cron/root

* * * * * /root/test.sh

Hoặc cái này:

# crontab -l

Tập lệnh này sẽ chạy qua cron mỗi phút.

Thời gian tối thiểu là 1 phút. Trình nền cron quét danh sách nhiệm vụ mỗi phút một lần. Nó kiểm tra các tệp và thư mục sau:

/etc/crontab
/etc/cron.*/.
/var/spool/cron/

Mỗi mục nhập lịch trình crontab bao gồm 5 trường:

minutes hours day_of_a_month months week_day
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

Cấu hình Cron Jobs với Crontab trên CentOS / RHEL Linux

Bạn có thể sử dụng các giá trị hợp lệ sau cho mỗi trường:

Field Phạm vi giá trị
Phút 0-59
Giờ 0-23
Ngày trong tháng 1-31
Tháng 1-12 hoặc jan feb mar apr may jun jul aug sep oct nov dec
Ngày trong tuần 0-6 (trong đó 0 là Chủ nhật) hoặc sun mon tue wed thu fri sat

* ký tự có nghĩa là tất cả các giá trị được phép. Đây là một nhiệm vụ mẫu:

30 00 * * 1 /root/test.sh

Tập lệnh trong nhiệm vụ sẽ được chạy vào thứ Hai hàng tuần lúc 00:30 sáng.

Để làm cho cú pháp tệp cron dễ dàng hơn, một số ký tự đặc biệt được sử dụng:

  • Một dấu phẩy (,) được sử dụng để phân tách các giá trị lịch trình để chạy cùng một tác vụ tại các thời điểm khác nhau. Ví dụ:nếu bạn muốn chạy một công việc vào phút thứ 15 và 30 của mỗi giờ, bạn có thể đặt lịch như sau:
15 * * * *
30 * * * *

Hoặc sử dụng cú pháp ngắn hơn với dấu phẩy:

15,30 * * * *
  • Một dấu gạch chéo (/) được sử dụng để lặp lại một nhiệm vụ. Ví dụ:bạn muốn chạy một tác vụ cứ sau 2 giờ. Sử dụng / bạn sẽ làm cho nội dung của tệp cron ngắn hơn nhiều, ngược lại, nó khá dài:
* */2 * * *
  • Một dấu gạch ngang (-) cho biết phạm vi giá trị trong một trường. Nếu bạn muốn chạy một công việc trong 10 phút đầu tiên hoặc cuối cùng của một giờ, hãy chỉ định phạm vi bằng dấu gạch ngang:
0-10 * * * *
50-60 * * * *

Dưới đây là một số ví dụ khác về lịch biểu cron:

  • chạy vào các ngày trong tuần lúc 12:00 PM và 06:00 PM: 0 12,18 * * 1-5
  • 30 phút một lần:*/30 * * * *
  • mỗi Thứ Bảy:0 0 * * 6
  • thứ Ba và thứ Năm hàng tuần lúc 02:00 sáng:0 2 * * 2,4

Bạn cũng có thể sử dụng các biến đặc biệt trong cron.

Biến Mô tả Cú pháp
@reboot Chạy một lần khi khởi động
@yearly

hoặc

@annually

Mỗi năm một lần 0 0 1 1 *
@monthly Mỗi tháng một lần 0 0 1 * *
@weekly Mỗi tuần một lần 0 0 * * 0
@daily Mỗi ngày 0 0 * * *
@hourly Mỗi giờ 0 * * * *
@midnight Vào lúc nửa đêm

Có nghĩa là để chạy một tác vụ hàng ngày, bạn có thể sử dụng cú pháp cron sau:

@daily echo "Cron check"

Bạn có thể chỉnh sửa tệp crontab của người dùng khác:

# crontab -u username

Làm cách nào để gửi thông báo của Cron tới email?

Nếu bạn muốn nhận thông tin về cách chạy các tác vụ crontab của mình qua email, bạn cần định cấu hình tệp cron với công việc đó.

Để gửi email, một tác nhân thư phải được cài đặt trên máy chủ của bạn. Để kiểm tra, tôi đã cài đặt sendmail trên máy chủ Linux của tôi:

# dnf install sendmail -y
# service sendmail start

Hãy định cấu hình các thông số để gửi email trong tệp cron. Thêm các dòng sau vào tệp:

MAILTO="youremail@gmail.com"
SHELL=/bin/bash
HOME=/
* * * * * echo "Cron check"

SHELL - một trình bao người dùng

HOME - đường dẫn đến tệp cron

Cấu hình Cron Jobs với Crontab trên CentOS / RHEL Linux

Mỗi khi công việc cron bắt đầu, một email thông báo sẽ được gửi đến hộp thư của bạn.

Bạn có thể lưu thông tin về việc chạy tác vụ cron vào tệp nhật ký. Để thực hiện, hãy thêm >> vào cuối tệp và nhập đường dẫn đến tệp nhật ký của bạn:

* * * * * echo "Cron check" >> /var/log/admin/journal.log

Nếu có nhiều công việc trong tệp crontab của bạn và bạn không muốn nhận kết quả của một số chúng qua email, bạn có thể chạy các công việc này ở chế độ im lặng:

* * * * * echo "Cron check" >> /dev/null 2>&1

Nhật ký và tệp cấu hình Cron

Tệp cấu hình cron chính là / etc / crontab. Bên cạnh tệp cron, bạn có thể chạy các công việc từ các thư mục sau:

  • /etc/cron.daily - để bắt đầu tập lệnh mỗi ngày một lần
  • /etc/cron.hourly -…. mỗi giờ một lần
  • /etc/cron.monthly -…. mỗi tháng một lần
  • /etc/cron.weekly -…. mỗi tuần một lần

Chỉ cần đặt một tệp script vào một trong các thư mục để chạy nó theo lịch trình.

Bạn có thể hạn chế quyền truy cập vào bộ lập lịch bằng /etc/cron.allow và /etc/cron.deny. Chỉ cần tạo các tệp này và thêm người dùng vào chúng, những người được phép hoặc bị từ chối chạy các tác vụ cron là đủ.

Bạn có thể thêm công việc vào / etc / crontab cũng. Thông thường, tệp được sử dụng bởi người dùng root hoặc để cấu hình các tác vụ hệ thống. Tệp người dùng cá nhân của công việc cron được lưu trữ trong / var / spool / cron / hoặc / var / cron / tabs / .

Để theo dõi lỗi hoặc công việc cron, bạn có thể xem tệp nhật ký: / var / log / cron . Tệp này ghi lại tất cả các tác vụ và lỗi trong hoạt động daemon nếu có:

Cấu hình Cron Jobs với Crontab trên CentOS / RHEL Linux