Cron với Anacron: Cách lên lịch công việc bằng Anacron Linux

Trong bài viết này, chúng tôi sẽ giải thích cron và anacron và cũng hướng dẫn cách cài đặt anacron trên Linux. Chúng tôi cũng sẽ so sánh hai tiện ích này.

Để đặt lịch một tác vụ vào một thời gian cụ thể hoặc sau đó, bạn có thể sử dụng các lệnh "at" hoặc "batch" và để thiết lập các lệnh chạy một cách định kỳ, bạn có thể sử dụng các tính năng cron và anacron.

Cron - là một daemon được sử dụng để chạy các tác vụ được lập lịch như sao lưu hệ thống, cập nhật và nhiều hơn nữa. Nó phù hợp để chạy các tác vụ được lập lịch trên các máy chủ chạy không ngừng 24X7 như các máy chủ.

Các lệnh/tác vụ được viết thành các cron job và được lên lịch trong các tệp crontab. Tệp crontab hệ thống mặc định là /etc/crontab, nhưng mỗi người dùng cũng có thể tạo tệp crontab riêng của mình để khởi chạy các lệnh vào thời gian mà người dùng xác định.

Để tạo một tệp crontab cá nhân, chỉ cần gõ:

$ crontab -e

Cách thiết lập Anacron Linux

Anacron được sử dụng để chạy các lệnh định kỳ với tần suất được xác định theo số ngày. Nó hoạt động một chút khác so với cron; cho rằng một máy không sẽ được bật suốt thời gian.

Nó phù hợp để chạy các công việc được lên lịch hàng ngày, hàng tuần và hàng tháng thường được chạy bởi cron, trên các máy không chạy 24/7 như máy tính xách tay và máy tính để bàn.

Giả sử bạn có một tác vụ được lập lịch (ví dụ như một kịch bản sao lưu) để chạy bằng cron mỗi đêm, có thể khi bạn ngủ, và máy tính để bàn / máy tính xách tay của bạn tắt vào thời điểm đó. Kịch bản sao lưu của bạn sẽ không được thực thi.

Tuy nhiên, nếu bạn sử dụng anacron, bạn có thể chắc chắn rằng lần tiếp theo bạn bật máy tính để bàn / máy tính xách tay lại, kịch bản sao lưu sẽ được thực thi.

Anacron hoạt động như thế nào trong Linux

Các công việc anacron được liệt kê trong /etc/anacrontab và các công việc có thể được lên lịch bằng cú pháp dưới đây (các comment bên trong tệp anacrontab phải bắt đầu bằng #).

period   delay   job-identifier   command

Từ định dạng trên:

  • Tần suất - đây là tần suất thực thi công việc được chỉ định theo số ngày hoặc @daily, @weekly hoặc @monthly để thực thi một lần mỗi ngày, tuần hoặc tháng. Bạn cũng có thể sử dụng các số: 1 - hàng ngày, 7 - hàng tuần, 30 - hàng tháng và N - số ngày.
  • Độ trễ - đây là số phút để đợi trước khi thực thi công việc.
  • job-id - đây là tên độc nhất cho công việc được viết trong các tệp nhật ký.

Để xem các tệp ví dụ, gõ:

$ ls -l /var/spool/anacron/

total 12
-rw------- 1 root root 9 Jun  1 10:25 cron.daily
-rw------- 1 root root 9 May 27 11:01 cron.monthly
-rw------- 1 root root 9 May 30 10:28 cron.weekly
  • Lệnh - đây là lệnh hoặc tập lệnh shell muốn thực thi.

Đây là những gì xảy ra trong thực tế:

  • Anacron sẽ kiểm tra xem một công việc đã được thực thi trong khoảng thời gian xác định trong trường tần suất. Nếu không, nó sẽ thực thi lệnh được chỉ định trong trường lệnh sau khi đợi số phút được chỉ định trong trường độ trễ.
  • Sau khi công việc đã thực thi, nó sẽ ghi lại ngày tháng trong một tệp thẻ thời gian trong thư mục /var/spool/anacron với tên được chỉ định trong trường job-id (tên tệp thời gian).

Bây giờ hãy xem một ví dụ. Điều này sẽ chạy kịch bản /home/aaronkilik/bin/backup.sh mỗi ngày:

@daily    10    example.daily   /bin/bash /home/aaronkilik/bin/backup.sh

Nếu máy tính tắt khi công việc backup.sh được dự định để chạy, anacron sẽ chạy nó 10 phút sau khi máy tính được bật mà không cần phải chờ 7 ngày khác.

Có hai biến quan trọng trong tệp anacrontab bạn nên hiểu:

  • START_HOURS_RANGE - đây là khoảng thời gian bắt đầu trong đó các công việc sẽ được bắt đầu (tức là thực hiện các công việc trong các giờ sau đây).
  • RANDOM_DELAY - đây xác định độ trễ ngẫu nhiên tối đa được thêm vào độ trễ xác định bởi người dùng của một công việc (mặc định là 45).

Đây là cách tệp anacrontab của bạn có thể trông như thế nào.

Anacron - Tệp /etc/anacrontab
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOME=/root
LOGNAME=root

# These replace cron's entries
1       5       cron.daily      run-parts --report /etc/cron.daily
7       10      cron.weekly     run-parts --report /etc/cron.weekly
@monthly        15      cron.monthly    run-parts --report /etc/cron.monthly

@daily    10    example.daily   /bin/bash /home/aaronkilik/bin/backup.sh                                                                      

Dưới đây là một bảng so sánh giữa cron và anacron để giúp bạn hiểu khi nào sử dụng mỗi cái.

Cron Anacron
Nó là một daemon Nó không phải là một daemon
Phù hợp cho các máy chủ Phù hợp cho máy tính để bàn/máy tính xách tay
Cho phép bạn chạy công việc lập lịch mỗi phút Chỉ cho phép bạn chạy công việc lập lịch hàng ngày
Không thực thi công việc lập lịch khi máy tính tắt Nếu máy tính tắt khi công việc lập lịch sắp diễn ra, nó sẽ thực thi công việc lập lịch khi máy tính được bật lần tiếp theo
Có thể được sử dụng bởi cả người dùng bình thường và người dùng root Chỉ có thể được sử dụng bởi root trừ khi khác (được bật cho người dùng bình thường với cấu hình cụ thể)

Sự khác biệt chính giữa cron và anacron là cron hoạt động hiệu quả trên các máy tính sẽ chạy không ngừng trong khi anacron Linux dành cho các máy tính sẽ được tắt vào một ngày hoặc tuần.