Lập lịch tác vụ định kỳ trên CentOS 7 với crontab

Trên hệ điều hành CentOS 7, công cụ phổ biến nhất để thiết lập tác vụ định kỳ là crontab. Ngoài ra còn có hai phương pháp khác là atanacron, tuy nhiên mỗi phương pháp phù hợp với các trường hợp sử dụng riêng:

  • at: Dùng để thực thi lệnh một lần duy nhất. Yêu cầu dịch vụ atd đang chạy.
  • crontab: Cho phép lập lịch lặp lại theo chu kỳ (phút, giờ, ngày...). Cần dịch vụ crond hoạt động.
  • anacron: Chỉ hỗ trợ chu kỳ theo ngày và có khả năng chạy bù các tác vụ bị lỡ do hệ thống tắt.

Mối quan hệ giữa crontab và crond

crond là một daemon (tiến trình nền) chịu trách nhiệm kiểm tra và thực thi các tác vụ định kỳ mỗi phút một lần. Trong khi đó, crontab là công cụ dòng lệnh cho phép người dùng tạo, chỉnh sửa hoặc xóa các tác vụ này. Do cách hoạt động của crond, không thể thiết lập lịch chạy theo giây.

Các lệnh thường dùng

Quản lý dịch vụ crond

systemctl start crond    # Khởi động dịch vụ
systemctl stop crond     # Dừng dịch vụ
systemctl restart crond  # Khởi động lại
systemctl reload crond   # Tải lại cấu hình
systemctl status crond   # Kiểm tra trạng thái

Quản lý tác vụ với crontab

crontab -u username -e   # Chỉnh sửa tác vụ cho người dùng cụ thể (chỉ root)
crontab -l               # Liệt kê các tác vụ hiện tại
crontab -e               # Chỉnh sửa tác vụ của người dùng hiện tại
crontab -r               # Xóa tất cả tác vụ
crontab -i               # Xóa với xác nhận

Hai cách cấu hình cron

1. Qua file /etc/crontab

Đây là file cấu hình hệ thống, chỉ có root mới có quyền sửa. Cấu trúc bao gồm thêm trường user-name:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# Ví dụ:
0 2 * * * root /root/mysqlbak/mysqlBackup.sh >> /root/mysqlbak/aa.txt

Dòng trên nghĩa là: vào lúc 2 giờ sáng hàng ngày, người dùng root sẽ chạy script sao lưu và ghi log ra file.

2. Qua lệnh crontab -e

Mọi người dùng đều có thể dùng lệnh này để quản lý tác vụ cá nhân. File được lưu tại /var/spool/cron/username. Cú pháp không có trường tên người dùng:

50 1 * * * /opt/backup.sh

So sánh

  • /etc/crontab cho phép chỉ định người dùng thực thi và môi trường shell.
  • crontab -e đơn giản hơn, dành cho người dùng thường.
  • Cả hai phương pháp đều không yêu cầu khởi động lại crond sau khi thay đổi.

Ví dụ: Lên lịch tắt máy lúc 22:01 hàng ngày

Cách 1 (dành cho root):

su - root
crontab -e
# Thêm dòng:
01 22 * * * /sbin/shutdown -h now

Cách 2 (sửa file hệ thống):

vi /etc/crontab
# Thêm dòng:
01 22 * * * root /sbin/shutdown -h now

Lưu ý về quyền thực thi

Nếu tác vụ gọi đến script, cần cấp quyền thực thi:

chmod +x /opt/mysqlBackup.sh

Giám sát và gỡ lỗi

Nhật ký thực thi cron được ghi tại:

  • /var/log/cron – dùng tail -f /var/log/cron để theo dõi trực tiếp.
  • /var/spool/mail/root – chứa đầu ra tiêu chuẩn (stdout/stderr) nếu không chuyển hướng.

Thẻ: centos7 crontab linux-scheduling cron-daemon systemd

Đăng vào ngày 22 tháng 5 lúc 09:11