#30 - Job Scheduling (cronjob/crontab) on Linux CentOS 8
Mục lục:
- Tập tin Crontab là gì
- Crontab Cú pháp và Toán tử
- Tập tin Crontab trên toàn hệ thống
- Macro được xác định trước
- Lệnh Crontab Linux
- Biến Crontab
- Hạn chế Crontab
- Ví dụ về công việc định kỳ
- Phần kết luận
Cron là một trình nền lập lịch biểu thực hiện các nhiệm vụ theo các khoảng thời gian được chỉ định. Các tác vụ này được gọi là công việc định kỳ và chủ yếu được sử dụng để tự động hóa bảo trì hoặc quản trị hệ thống.
Ví dụ: bạn có thể đặt một công việc định kỳ để tự động hóa các tác vụ lặp đi lặp lại như sao lưu cơ sở dữ liệu hoặc dữ liệu, cập nhật hệ thống với các bản vá bảo mật mới nhất, kiểm tra việc sử dụng dung lượng ổ đĩa, gửi email, v.v. Một số ứng dụng, chẳng hạn như Drupal hoặc Magento, yêu cầu các công việc định kỳ để thực hiện các tác vụ nhất định.
Các công việc định kỳ có thể được lên kế hoạch để chạy theo một phút, giờ, ngày trong tháng, tháng, ngày trong tuần hoặc bất kỳ sự kết hợp nào trong số này.
Tập tin Crontab là gì
Crontab (bảng cron) là một tệp văn bản chỉ định lịch trình của các công việc định kỳ. Có hai loại tập tin crontab. Các tệp crontab trên toàn hệ thống và các tệp crontab của người dùng cá nhân.
Các tập tin crontab của người dùng được lưu trữ theo tên người dùng và vị trí của họ thay đổi theo hệ điều hành. Trong hệ thống dựa trên Red Hat như CentOS, các tệp crontab được lưu trữ trong thư mục
/var/spool/cron
trong khi trên các tệp Debian và Ubuntu được lưu trữ trong thư mục
/var/spool/cron/crontabs
.
Mặc dù bạn có thể chỉnh sửa các tệp crontab của người dùng theo cách thủ công, bạn nên sử dụng lệnh
crontab
.
/etc/crontab
và các tệp trong thư mục
/etc/cron.d
là các tệp crontab trên toàn hệ thống chỉ có thể được chỉnh sửa bởi quản trị viên hệ thống.
Trong hầu hết các bản phân phối Linux, bạn cũng có thể đặt các tập lệnh bên trong các thư mục
/etc/cron.{hourly, daily, weekly, monthly}
và các tập lệnh sẽ được thực thi mỗi
hour/day/week/month
.
Crontab Cú pháp và Toán tử
Mỗi dòng trong tệp crontab của người dùng chứa sáu trường được phân tách bằng khoảng trắng theo sau là lệnh sẽ được chạy.
* * * * * command(s) - - - - - | | | | | | | | | ----- Day of week (0 - 7) (Sunday=0 or 7) | | | ------- Month (1 - 12) | | --------- Day of month (1 - 31) | ----------- Hour (0 - 23) ------------- Minute (0 - 59)
Năm trường đầu tiên có thể chứa một hoặc nhiều giá trị, được phân tách bằng dấu phẩy hoặc một phạm vi giá trị được phân tách bằng dấu gạch nối.
-
*-Toán tử dấu hoa thị có nghĩa là bất kỳ giá trị hoặc luôn luôn. Nếu bạn có biểu tượng dấu hoa thị trong trường Giờ, điều đó có nghĩa là tác vụ sẽ được thực hiện mỗi giờ.,-Toán tử dấu phẩy cho phép bạn chỉ định danh sách các giá trị cho sự lặp lại. Ví dụ: nếu bạn có1, 3, 5trong trường Giờ, tác vụ sẽ chạy vào lúc 1 giờ sáng, 3 giờ sáng và 5 giờ sáng.-Toán tử gạch nối cho phép bạn chỉ định một phạm vi giá trị. Nếu bạn có1-5trong trường Ngày trong tuần, tác vụ sẽ chạy mỗi ngày trong tuần (Từ thứ Hai đến thứ Sáu)./-Toán tử gạch chéo cho phép bạn chỉ định các giá trị sẽ được lặp lại trong một khoảng nhất định giữa chúng. Ví dụ: nếu bạn có*/4trong trường Giờ, điều đó có nghĩa là hành động sẽ được thực hiện sau mỗi bốn giờ. Nó giống như chỉ định0, 4, 8, 12, 16, 20. Thay vì dấu hoa thị trước toán tử gạch chéo, bạn cũng có thể sử dụng một phạm vi các giá trị,1-30/10có nghĩa tương tự như1, 11, 21.
Tập tin Crontab trên toàn hệ thống
Cú pháp của tệp crontab trên toàn hệ thống hơi khác so với crontabs của người dùng. Nó chứa một trường người dùng bắt buộc bổ sung chỉ định người dùng nào sẽ chạy công việc định kỳ.
Có một số macro lịch biểu Cron đặc biệt được sử dụng để chỉ định các khoảng phổ biến. Bạn có thể sử dụng phím tắt này thay cho thông số ngày năm cột. Lệnh crontab cho phép bạn cài đặt hoặc mở tệp crontab để chỉnh sửa. Bạn có thể sử dụng lệnh crontab để xem, thêm, xóa hoặc sửa đổi các công việc cron bằng các tùy chọn sau: Lệnh crontab mở tệp crontab bằng trình chỉnh sửa được chỉ định bởi các biến môi trường
Trình nền cron tự động đặt một số biến môi trường. Quản trị viên hệ thống có thể kiểm soát người dùng nào có quyền truy cập vào lệnh
Theo mặc định, chỉ có tệp
Nếu tệp
Nếu không có tệp nào tồn tại, chỉ những người dùng có đặc quyền quản trị mới có thể sử dụng lệnh
Dưới đây là một số ví dụ về công việc định kỳ sẽ chỉ cho bạn cách lên lịch tác vụ để chạy trong các khoảng thời gian khác nhau. Chạy một lệnh vào lúc 15:00 mỗi ngày từ thứ Hai đến thứ Sáu: Chạy một kịch bản cứ sau 5 phút và chuyển hướng đầu ra tiêu chuẩn thành
Chạy hai lệnh mỗi thứ Hai lúc 3 giờ chiều (sử dụng toán tử
Chạy một đoạn mã PHP cứ sau 2 phút và ghi đầu ra vào một tệp: Chạy một kịch bản mỗi ngày, mỗi giờ, vào giờ, từ 8 giờ sáng đến 4 giờ chiều: Chạy một kịch bản vào thứ Hai đầu tiên mỗi tháng, lúc 7 giờ sáng Chạy một kịch bản lúc 9:15 tối, vào ngày 1 và 15 hàng tháng: Đặt các biến
Bạn đã học cách tạo công việc định kỳ và lên lịch các nhiệm vụ vào một ngày và giờ cụ thể. Hãy để lại nhận xét nếu bạn có bất kỳ câu hỏi nào.
* * * * * command(s)
* * * * * command(s)
Macro được xác định trước
@yearly
(hoặc
@annually
) - Chạy nhiệm vụ được chỉ định mỗi năm một lần vào nửa đêm (12:00 sáng) của ngày 1 tháng 1. Tương đương với
0 0 1 1 *
.
@monthly
- Chạy nhiệm vụ được chỉ định mỗi tháng một lần vào nửa đêm vào ngày đầu tiên của tháng. Tương đương với
0 0 1 * *
.
@weekly
- Chạy nhiệm vụ được chỉ định mỗi tuần một lần vào nửa đêm vào Chủ nhật. Tương đương với
0 0 * * 0
.
@daily
- Chạy nhiệm vụ được chỉ định mỗi ngày một lần vào nửa đêm. Tương đương với
0 0 * * *
.
@hourly
- Chạy tác vụ được chỉ định mỗi giờ một lần vào đầu giờ. Tương đương với
0 * * * *
.
@reboot
- Chạy tác vụ được chỉ định khi khởi động hệ thống (thời gian khởi động).Lệnh Crontab Linux
crontab -e
- Chỉnh sửa tập tin crontab hoặc tạo tập tin nếu nó chưa tồn tại.
crontab -l
- Hiển thị nội dung tập tin crontab.
crontab -r
- Xóa tệp crontab hiện tại của bạn.
crontab -i
- Xóa tệp crontab hiện tại của bạn bằng lời nhắc trước khi xóa.
crontab -u
VISUAL
hoặc
EDITOR
.
Biến Crontab
PATH=/usr/bin:/bin
. Nếu lệnh bạn đang gọi có mặt trong đường dẫn được chỉ định cron, bạn có thể sử dụng đường dẫn tuyệt đối cho lệnh hoặc thay đổi biến cron
$PATH
. Bạn không thể ngầm thêm
:$PATH
như bạn sẽ làm với một tập lệnh thông thường. Shell mặc định được đặt thành
/bin/sh
. Bạn có thể đặt một shell khác bằng cách thay đổi biến SHELL.Cron gọi lệnh từ thư mục chính của người dùng. Biến
HOME
có thể được ghi đè bằng cài đặt trong crontab. Thông báo email được gửi đến chủ sở hữu của crontab. Để ghi đè hành vi mặc định, bạn có thể sử dụng biến môi trường
MAILTO
với danh sách (được phân tách bằng dấu phẩy) của tất cả các địa chỉ email bạn muốn nhận thông báo email. Nếu
MAILTO
được xác định nhưng trống (
MAILTO=""
), không có thư nào được gửi.Hạn chế Crontab
crontab
bằng cách sử dụng các tệp
/etc/cron.allow
và
/etc/cron.allow
. Các tập tin bao gồm một danh sách tên người dùng, một tên người dùng trên mỗi dòng.
/etc/cron.deny
tồn tại và trống, có nghĩa là tất cả người dùng có thể sử dụng lệnh crontab. Nếu bạn muốn từ chối quyền truy cập vào các lệnh crontab cho một người dùng cụ thể, hãy thêm tên người dùng vào tệp này.
/etc/cron.allow
chỉ tồn tại thì người dùng được liệt kê trong tệp này có thể sử dụng lệnh
crontab
.
crontab
.Ví dụ về công việc định kỳ
0 15 * * 1-5 command
dev null
, chỉ có lỗi tiêu chuẩn sẽ được gửi đến địa chỉ email được chỉ định:
[email protected] */5 * * * * /path/to/script.sh > /dev/null
&&
giữa các lệnh):
0 15 * * Mon command1 && command2
*/2 * * * * /usr/bin/php /path/to/script.php >> /var/log/script.log
00 08-16 * * * /path/to/script.sh
0 7 1-7 * 1 /path/to/script.sh
15 9 1, 15 * * /path/to/script.sh
HOME
,
PATH
,
SHELL
và
MAILTO
tùy chỉnh và chạy lệnh mỗi phút.
HOME=/opt PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin SHELL=/usr/bin/zsh [email protected] */1 * * * * command
Phần kết luận
Trong tuyên bố của mình, Microsoft cho biết, sau cuộc họp cổ đông của Yahoo trong quý này, "sẽ rất quan tâm đến việc thảo luận với một hội đồng mới về một giao dịch lớn với Yahoo !, chẳng hạn như một trong hai Một giao dịch để mua chức năng "Tìm kiếm" với sự đảm bảo tài chính lớn hoặc, theo cách khác, mua toàn bộ công ty ".
Icahn đã đề cử một số ứng viên được đề cử vào hội đồng quản trị trong cuộc họp cổ đông vào tháng 8 của công ty. Trong bức thư, ông nói ông có chút nghi ngờ rằng một ban giám đốc mới sẽ bắt đầu đàm phán với Microsoft và "nhanh chóng di chuyển" để thay thế vị trí CEO Jerry Yang hiện tại "với một CEO mới có kinh nghiệm điều hành".
Việc đưa ra tiếng nói và tất cả các hình thức truyền thông khác trên mạng gói tin ban đầu là tiết kiệm tiền thông qua hợp nhất và làm cho CNTT Giancarlo cho biết, các công việc của các quản trị viên, chẳng hạn như bổ sung và di chuyển nhân viên trong hệ thống điện thoại, dễ dàng hơn. Bây giờ nó đã giúp nhân viên nói chung làm công việc của họ, ông nói. Họ cần các tính năng liên lạc thống nhất để tích hợp với các ứng dụng kinh doanh hàng ngày của họ, hiện nay bao gồm các công cụ như mạng xã hội b
Thời gian kinh tế khó khăn thực sự đòi hỏi các công cụ giao tiếp tốt hơn khi các công ty cắt giảm nhân viên và các nhân viên còn lại được yêu cầu sử dụng thời gian của họ tốt hơn, Giancarlo nói. Nhưng ông tin rằng Avaya và các nhà cung cấp khác đã giảm ngắn về tính dễ sử dụng. Vì lý do đó, công ty đã tổ chức lại tổ chức phát triển sản phẩm của mình để tập trung nhiều hơn vào nhu cầu và giao diện người dùng. "Các kỹ sư sẽ không còn ảnh hưởng hoặc nói gì đến cách mà sản phẩm của họ xuất hiện với t
Hoa Kỳ. Một số cơ quan liên bang của Mỹ có thể bị cản trở từ việc mua các hệ thống công nghệ thông tin của các công ty có liên kết với chính phủ Trung Quốc theo luật tài trợ mới do Tổng thống Barack Obama ký vào đầu tuần này. Một số cơ quan liên bang của Hoa Kỳ có thể bị cản trở từ việc mua các hệ thống công nghệ thông tin do các công ty liên kết với chính phủ Trung Quốc thực hiện theo luật tài trợ mới do Tổng thống Barack Obama ký vào đầu tuần này. các cơ quan chức năng sẽ kiểm tra tất cả các g
"Nguy cơ gián điệp hoặc phá hoại mạng" đưa vào tài khoản, cùng với hệ thống CNTT được "sản xuất, sản xuất hoặc lắp ráp" bởi các công ty do chính phủ Trung Quốc sở hữu, chỉ đạo hoặc tài trợ.







