Cách thiết lập công việc định kỳ trong Debian 12

Tác giả Security+, T.Hai 06, 2024, 09:17:04 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Cách thiết lập công việc định kỳ trong Debian 12


Crontab là một công cụ Linux quan trọng để lập lịch các tác vụ để các chương trình và tập lệnh có thể được thực thi tại một thời điểm cụ thể. Trong bài viết này, tôi sẽ hướng dẫn bạn cách lên lịch công việc trong Debian 12 và cho bạn xem một số ví dụ. Các lệnh tương tự cũng sẽ hoạt động trên các phiên bản Debian cũ hơn.

1. Điều kiện tiên quyết

Bạn cần có quyền root trước khi tiếp tục.

2. Cài đặt Cron và Crontab

Trên hệ thống Debian của tôi, cron được cài đặt theo mặc định. Tuy nhiên, nếu nó chưa được cài đặt trên máy của bạn, hãy chạy một số lệnh sau trên thiết bị đầu cuối với quyền root.

Mã nguồn [Chọn]
apt-get update

apt-get install cron

Để có danh sách các công việc định kỳ đã được lên lịch trên máy của bạn, hãy thực hiện thao tác sau trên thiết bị đầu cuối.

Mã nguồn [Chọn]
crontab -l
3. Mở crontab bằng trình soạn thảo văn bản

Để mở crontab bằng trình soạn thảo văn bản, hãy thực hiện lệnh sau với quyền root.

Mã nguồn [Chọn]
crontab -e
Ngay sau khi lệnh được thực thi, bạn sẽ được yêu cầu chọn trình soạn thảo văn bản như trong ảnh chụp màn hình sau.


Lệnh crontab -e mở crontab của người dùng hiện đang đăng nhập, đó là người dùng root trong ví dụ của tôi. Để mở crontab của người dùng khác, giả sử người dùng 'tom', hãy thêm cờ -u theo sau là tên của người dùng. Ví dụ:

Mã nguồn [Chọn]
crontab -e -u tom
4. Cú pháp của crontab

Linux crontab có sáu trường như hình bên dưới.

Mã nguồn [Chọn]
* * * * * /path/to/script.sh
Mỗi trường có ý nghĩa sau.

[Phút] [giờ] [Ngày_trong_tháng] [Tháng_của_năm] [Ngày_trong_tuần] [lệnh]

  • Phút 0 - 59
  • Giờ 0 - 23
  • Ngày trong tháng 1 - 31
  • Tháng của năm 1 - 12
  • Ngày trong tuần 0 - 7

5. Một ví dụ cơ bản về cron job

Dưới đây là một số ví dụ về công việc định kỳ.

5.1. Lên lịch thực thi cron job vào lúc 2 giờ sáng hàng ngày

Mã nguồn [Chọn]
0 2 * * * /bin/sh backup.sh
Công việc định kỳ ở trên sẽ được thực thi hàng ngày vào lúc 2 giờ sáng và sẽ chạy tập lệnh   Đăng nhập để xem liên kết. Điều này sẽ duy trì bản sao lưu mỗi ngày.

5.2. Lên lịch thực thi cron job hai lần một ngày

Mã nguồn [Chọn]
0 5,17 * * * /scripts/script.sh
Công việc định kỳ trên sẽ được thực hiện vào lúc 5 giờ sáng và 5 giờ chiều hàng ngày. Nhiều lần có thể được chỉ định với sự trợ giúp của dấu phẩy.

5.3. Lên lịch thực thi cron job mỗi phút

Mã nguồn [Chọn]
* * * * * scripts/script.sh
Công việc định kỳ ở trên sẽ được thực hiện mỗi phút.

5.4. Lên lịch thực thi cron job vào lúc 5 giờ chiều Chủ nhật hàng tuần

Mã nguồn [Chọn]
0 17 * * sun /scripts/script.sh
Công việc định kỳ trên sẽ được thực hiện vào lúc 5 giờ chiều Chủ Nhật hàng tuần. Loại cron này rất hữu ích để thực hiện các tác vụ hàng tuần như xoay vòng nhật ký, v.v.

5.5. Lên lịch thực hiện cron job 10 phút một lần

Nếu bạn muốn công việc của mình được thực thi 10 phút một lần, cron cần được cập nhật như sau.

Mã nguồn [Chọn]
*/10 * * * * /scripts/monitor.sh
'*/10' có nghĩa là chạy 10 phút một lần.

5.6. Lên lịch thực thi cron job vào những tháng đã chọn

Giả sử bạn muốn thực thi một cron vào tháng 1, tháng 5 và tháng 8 thì cron job cần được thiết lập như sau.

Mã nguồn [Chọn]
* * * jan,may,aug * /script/script.sh
Một lần nữa, nhiều tháng có thể được chỉ định bằng dấu phẩy.

5.7. Lên lịch thực thi cron job vào những ngày đã chọn

Nếu bạn muốn công việc định kỳ của mình được thực thi vào những ngày đã chọn, giả sử Chủ Nhật và Thứ Sáu lúc 5 giờ chiều, nó sẽ giống như sau.

Mã nguồn [Chọn]
0 17 * * sun,fri /script/script.sh
5.8. Lên lịch nhiều tác vụ trong một cron job

Nhiều tập lệnh có thể được chạy trong một tác vụ như sau. Cả hai tập lệnh phải được phân tách bằng dấu chấm phẩy.

Mã nguồn [Chọn]
* * * * * /scripts/script.sh; /scripts/scrit2.sh
5.9. Lên lịch chạy cron job 30 giây một lần

Để lên lịch cho một cron job thực thi cứ sau 30 giây, chúng ta cần thiết lập hai cron như sau:

Mã nguồn [Chọn]
* * * * * /scripts/script.sh * * * * * sleep 30; /scripts/script.sh
5.10. Lên lịch thực thi cron job hai lần vào Chủ Nhật và Thứ Hai hàng tuần

Nếu bạn muốn lên lịch thực thi một công việc hai lần vào lúc 4 giờ sáng và 5 giờ chiều vào Chủ Nhật và Thứ Hai hàng tuần, cronjob sẽ trông như thế này:

Mã nguồn [Chọn]
0 4,17 * * sun,mon /scripts/script.sh
Cả giờ và tuần trong ngày đều được phân tách bằng dấu phẩy.

6. Các câu hỏi thường gặp

6.1. Công việc định kỳ là gì?

Cron Job trong Debian là một tác vụ được lên lịch chạy tự động theo các khoảng thời gian được chỉ định. Nó sử dụng trình nền Cron để thực thi các tác vụ được xác định trong crontab, một tệp cấu hình chỉ định lịch trình và lệnh cho từng tác vụ.

6.2. Làm cách nào để xem Cron Jobs hiện có trong Debian?

Để xem Cron Jobs hiện có, hãy sử dụng lệnh crontab -l. Điều này sẽ hiển thị Cron Jobs cho người dùng hiện tại. Đối với Cron Jobs trên toàn hệ thống, hãy kiểm tra /etc/crontabtệp và các thư mục bên trong /etc/cron.*.

6.3. Làm cách nào tôi có thể tạo Cron Job mới trong Debian?

Để tạo một Cron Job mới, hãy sử dụng crontab -elệnh. Thao tác này sẽ mở tệp crontab của người dùng trong trình soạn thảo văn bản mặc định, nơi bạn có thể thêm một dòng mới xác định lịch trình và lệnh cho tác vụ mới.

6.4. Định dạng của mục nhập Cron Job là gì?

Mục nhập Cron Job có năm trường ngày giờ, theo sau là lệnh sẽ được thực thi. Định dạng là: minute hour day-of-month month day-of-week command.

6.5. Làm cách nào để chỉ định khoảng thời gian cho Cron Job?

Các khoảng thời gian trong Cron Job được chỉ định bằng cách sử dụng dấu hoa thị và số ở định dạng: minute hour day month weekday. Mỗi trường có thể có một số, một phạm vi, một danh sách các số hoặc dấu hoa thị (đại diện cho "mọi" giá trị có thể có cho trường đó).

6.6. Tôi có thể chỉnh sửa Cron Jobs trên toàn hệ thống không?

Có, nhưng nó yêu cầu quyền root. Chỉnh sửa /etc/crontab tệp hoặc thêm tập lệnh vào /etc/cron.daily, /etc/cron.weekly hoặc /etc/cron.monthly thư mục cho các tác vụ chạy hàng ngày, hàng tuần hoặc hàng tháng tương ứng.

6.7. Làm cách nào để xóa Cron Job?

Để xóa Cron Job, người dùng sử dụng crontab -eđể chỉnh sửa file crontab của người dùng và chỉ cần xóa dòng tương ứng với công việc muốn xóa. Lưu và thoát trình chỉnh sửa để áp dụng các thay đổi.

6.8. Tại sao Cron Job của tôi không chạy?

Các lý do phổ biến bao gồm định dạng lịch biểu không chính xác, vấn đề về quyền, biến môi trường không được đặt như trong trình bao tương tác hoặc lỗi trong chính lệnh. Kiểm tra nhật ký hệ thống để biết các thông báo lỗi liên quan đến Cron.

6.9. Tôi có thể chạy Cron Job khi khởi động lại không?

Có, bạn có thể lên lịch chạy Cron Job khi khởi động lại bằng cách sử dụng @reboottrường thời gian của mục nhập crontab.

6.10. Làm cách nào tôi có thể bảo mật Cron Jobs của mình?

Đảm bảo rằng chỉ những người dùng đáng tin cậy mới có quyền truy cập để sửa đổi tệp crontab. Thường xuyên xem lại Cron Jobs và các tập lệnh của chúng để phát hiện các vấn đề bảo mật tiềm ẩn. Giữ các tập lệnh được sử dụng trong Cron Jobs với các quyền tối thiểu cần thiết và thuộc quyền sở hữu của người dùng phù hợp.

Cảm ơn bạn đã đọc bài viết này về cron jobs. Có một ngày tuyệt vời!