Tài liệu

Bắt đầu nhanh + mô tả chức năng của từng phần, từng thiết bị (đang tiếp tục cập nhật)

Tác vụ định kỳ (Cron)

Bài viết này giới thiệu cách quản lý tác vụ định kỳ trên máy chủ đích.

Trước tiên tìm hiểu: Cron là gì

Cron là công cụ「lập lịch định kỳ」có sẵn của Linux. Bạn có thể để nó「tự động sao lưu cơ sở dữ liệu lúc 3 giờ sáng mỗi ngày」「dọn log mỗi giờ」「khởi động lại một dịch vụ vào mỗi thứ Hai」— đến giờ là tự động chạy, không cần người canh.

Giới thiệu chức năng

Xem, thêm, xóa tác vụ định kỳ Cron trên máy chủ đích.

Tình huống áp dụng

  • Sao lưu cơ sở dữ liệu định kỳ, dọn log
  • Chạy script giám sát định kỳ
  • Khởi động lại dịch vụ định kỳ, cập nhật chứng chỉ

Cách sử dụng

Vào「Bảng quản lý hệ thống → Tác vụ định kỳ」của một máy chủ, là thấy được tất cả tác vụ Cron hiện có của máy chủ đó.

Thêm tác vụ

Điền biểu thức Cron và lệnh cần chạy:

TrườngMô tả
Biểu thức thời gianDạng 5 đoạn, như 0 3 * * * (3 giờ sáng mỗi ngày)
LệnhLệnh shell cần chạy

Định dạng biểu thức Cron (phút giờ ngày tháng thứ):

* * * * *  lệnh
│ │ │ │ │
│ │ │ │ └── thứ (0-7, 0/7=Chủ nhật)
│ │ │ └──── tháng (1-12)
│ │ └────── ngày (1-31)
│ └──────── giờ (0-23)
└────────── phút (0-59)

Ví dụ thường dùng:

Biểu thứcÝ nghĩa
*/5 * * * *mỗi 5 phút
0 * * * *mỗi giờ
0 3 * * *3 giờ sáng mỗi ngày
0 3 * * 13 giờ sáng mỗi thứ Hai
0 3 1 * *3 giờ sáng ngày 1 mỗi tháng
0 3 * * 03 giờ sáng mỗi Chủ nhật
30 2 * * *2 giờ 30 sáng mỗi ngày

Ví dụ lệnh thực dụng:

# Sao lưu cơ sở dữ liệu lúc 3 giờ sáng mỗi ngày (ví dụ)
0 3 * * * docker exec sshe-mysql mariadb-dump -uroot -p'<mật-khẩu>' tên-cơ-sở-dữ-liệu > /opt/backup/db-$(date +\%F).sql

# Dọn tệp tạm mỗi 6 giờ
0 */6 * * * find /tmp -type f -mtime +7 -delete

# Khởi động lại một dịch vụ lúc 4 giờ sáng mỗi thứ Hai
0 4 * * 1 systemctl restart my-app

Lưu ý

1. Tác vụ Cron chạy dưới danh nghĩa người dùng hiện tại của máy chủ đích, hãy đảm bảo người dùng đó có quyền chạy lệnh.

2. Nên ghi đường dẫn tuyệt đối trong lệnh (môi trường Cron có ít biến, đường dẫn tương đối có thể không tìm thấy chương trình).

3. Dùng % trong lệnh phải escape thành \% (Cron coi % là ký tự đặc biệt).

4. Xóa tác vụ Cron có hiệu lực ngay lập tức.

5. Sửa Cron cấp hệ thống (/etc/crontab) có thể cần thao tác ngoài bảng điều khiển; bảng điều khiển mặc định quản lý crontab -l của người dùng hiện tại.