Lập lịch cho các tác vụ trên Linux

Cron daemon

Chúng ta có thể sắp lịch các công việc trên Linux sao cho chúng chạy tại mỗi phút, mỗi giờ, mỗi ngày hoặc mỗi tháng nhất định. Cron daemon phụ trách việc thực hiện các công việc đã được lên lịch này, mỗi công việc được xem như một câu lệnh shell script của một người dùng xác định.

crontab

File /etc/crontab là file cấu hình chính dành cho cron. Mỗi dòng trong crontab chứa lịch của một công việc cụ thể và có dạng như sau

min hour day-of-month month day-of-week user command

Trong đó:

  • min là phút cần chạy câu lệnh, nó có giá trị từ 0 tới 59
  • hour là giờ cần chạy câu lệnh, nó có giá trị từ 0 tới 23
  • dayofmonth là ngày trong tháng cần chạy câu lệnh, nó có giá trị từ 1 tới 31
  • month là tháng cần chạy câu lệnh, nó có giá trị từ 0 tới 12 hoặc tên của tháng như Jan, Feb…
  • dayofweek là ngày trong tuần cần chạy câu lệnh, nó có giá trị từ 0 tới 7 (Sunday tương ứng với 0 và 7) hoặc tên ngày như Mon, Tue, Wed…
  • user là tên người dùng cho câu lệnh sẽ được thực hiện
  • command là câu lệnh cần được thực hiện

Mỗi trường về thời gian kể trên đều có thể có các giá trị sau:

  • * tương ứng với mọi phút, giờ, ngày …
  • /x tương ứng với mỗi “x” phút, giờ …
  • các giá trị số được phân cách bằng dấu phẩy, ví dụ 8, 10, 12
  • một dải giá trị, ví dụ Mon-Fri

Dưới đây là một vài ví dụ về các dòng trong crontab

0 0 * * * root /usr/bin/updatedb  # chạy updatedb vào lúc nửa đêm hàng ngày
*/15 8-16 * * mon-fri mail fetchmail # chạy fetchmail với người dùng mail mỗi
				# 15 phút từ 8 giờ sáng tới
				# 4 giờ chiều từ thứ hai tới thứ sáu
0 3 1,10,20 * * root dump -5uf /dev/st0 # thực hiện dump vào các ngày 1, 10 và 20

Mỗi người dùng có một crontab riêng chứa tại /var/spool/cron/tab/username. Khi ta chạy lệnh crontab -e, hệ thống sẽ cho phép sửa đổi file này trong vi. crontab của người dùng có định dạng giống với /etc/crontab nhưng không có trường user.

Các thư mục của cron

Các script chứa trong các thư mục sau sẽ được chạy bởi cron tại mỗi giờ, ngày, tháng tùy theo tên tương ứng của thư mục. Các script này được kích hoạt bởi nội dung của /etc/crontab

  • /etc/cron.hourly/*
  • /etc/cron.daily/*
  • /etc/cron.monthly/*

Quyền sử dụng cron

Có hai file kiểm soát truyền truy cập tới crontab:

  • File allow – /var/spool/cron/allow hoặc /etc/cron.allow
  • File deny – /var/spool/cron/deny hoặc /etc/cron.deny

Nếu file allow tồn tại, tên của người dùng phải có mặt trong file đó thì người dùng mới có quyển sử dụng câu lệnh crontab. Nếu file deny tồn tại, tên của người dùng phải không có trong đó thì người dùng mới có quyền sử dụng crontab. Nếu cả hai file đều không tồn tại thì tất cả mọi người hoặc không một ai có quyền dùng crontab (điều này phụ thuộc vào tùy chọn lúc biên dịch hệ thống)

at

at là câu lệnh dùng để đăng ký (xếp lịch) cho câu lệnh được thực hiện vào một thời gian cụ thể. Daemon atd được dùng để thực hiện các công việc này.

Câu lệnh sử dụng at như sau:

at [ -f script ] HH:MM

Tùy chọn f chỉ ra rằng các câu lệnh được đọc từ một file (một script) thay vì từ stdin. Thời gian được dùng với định dạng posix mở rộng

Các câu lệnh khác có liên quan tới at bao gồm:

  • atq liệt kê tất cả các câu lệnh của một người dùng đã được đăng ký. Nếu superuser thực hiện lệnh này, hệ thống sẽ hiển thị tất cả các câu lệnh được  đăng ký của tất cả các người dùng. Đầu ra được hiển thị thành các dòng, với mỗi câu lệnh tương ứng với một dòng, có định dạng sau: Thứ tự câu lệnh, ngày, giờ, phân lớp của câu lệnh
  • atrm, xóa các câu lệnh đã được  đăng ký bởi at. Ta cần chỉ rõ số thứ tự của tác vụ cần xóa
  • batch thực hiện các câu lệnh khi tải hệ thống cho phép: cụ thể là khi tải trung bình giảm xuống dưới 0.8 hoặc một giá trị được xác định lúc chạy atrun.

Dưới đây là danh sách các file được at sử dụng

  • /var/spool/atjobs – các câu lệnh đã được  đăng ký và đang chờ để thực hiện
  • /var/spool/atspool – các  câu lệnh đã được  đăng ký và đang được thực hiện
  • /proc/loadavg – tải trung bình của hệ thống, khi hệ thống đang bận, các câu lệnh của at sẽ bị hoãn lại
  • /var/run/utmp – ai đăng nhập vào máy (hoặc ai đang thưc hiện các câu lệnh dùng at)
  • /etc/at.allow – danh sách những người có thể dùng at
  • /etc/at.deny – danh sách những người không thể dùng at


(cheva lược dịch từ tài liệu “Linux 102 Examination Modular Traning Notes“)

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: